mysql数据库优化课程---17、mysql索引优化
mysql数据库优化课程---17、mysql索引优化
一、总结
一句话总结:一些字段可能会使索引失效,比如like,or等
1、check表监测的使用场景是什么?
视图
视图建立在两个表上, 删除了其中的一个表,check 视图的时候会有错误提示信息
mysql> check table v_user;
---------------------------------------------------------------------------+
| yzmedu.v_user | check | Error | Table 'yzmedu.class' doesn't exist
|
| yzmedu.v_user | check | Error | View 'yzmedu.v_user' references invalid table(s) or c
olumn(s) or function(s) or definer/invoker of view lack rights to use them |
| yzmedu.v_user | check | error | Corrupt
|
---------------------------------------------------------------------------+
2、复合索引的使用情况怎样(用的少)?
左边
使用左边的那个才能用到复合索引,单独使用右边的不会用到复合索引(其实是用上了,但是无效)
所以复合索引用的极少
对于创建的多列索引,只要查询的条件中用到最左边的列,索引一般就会被使用.
对于创建的多列索引,只要查询的条件中用到最左边的列
,索引一般就会被使用。如下创建一个复合索引。
然后按company_id进行查询,发现使用到了复合索引
使用下面的查询就没有使用到复合索引。
mysql>create index ind_sales2_com_m on onsales2(company_id,moneys);
mysql>explain select * from sales2 where company_id=2006\G
mysql>explain select * from sales2 where moneys=1\G
3、like关键字有索引却用不上的情况?
百分号 左边
百分号在左边,索引用不上,百分号在右边,索引可能用上
#desc select * from user where username like 'linux%'\G
当使用like进行搜索时,%在前索引可能会失效.
如下这个使用到了索引,而下面例子能够使用索引,区别
就在于“%”的位置不同,上面的例子是吧“%”放在
了第一位,而下面的例子则没有
mysql> explain select * from company2 where name like
"3%"\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: company2
type: range
possible_keys: ind_company2_name
key: ind_company2_name
key_len: 11
ref: NULL
rows: 103
Extra: Using where
1 row in set (0.00 sec)
4、字段的null判断的时候会用到索引么?
会
#desc select * from user where username is null;
当判断null值时会使用username这一列的索引.
5、使用or关键词的时候索引的使用情况怎样?
失效
or关键字:
#desc select * from user where username='user7' or age=15\G
在使用or的情况下两边的索引都有可能失效.
6、全文索引有研究价值么?
没有
用到全文索引的时候,还不如去用sphix,速度快很多
二、内容在总结中
mysql数据库优化课程---17、mysql索引优化的更多相关文章
- 重新学习MySQL数据库5:根据MySQL索引原理进行分析与优化
重新学习MySQL数据库5:根据MySQL索引原理进行分析与优化 一:Mysql原理与慢查询 MySQL凭借着出色的性能.低廉的成本.丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库.虽然性能 ...
- MySQL的or/in/union与索引优化
转载自:MySQL的or/in/union与索引优化 https://blog.csdn.net/zhangweiwei2020/article/details/80005590 假设订单业务表结构为 ...
- mysql 数据库导入数据报错MySQL server has gone away解决办法
mysql 数据库导入数据报错MySQL server has gone away解决办法: 进入数据库执行以下命令即可: set global wait_timeout = 2880000; set ...
- MySQL数据库开发常见问题及几点优化!
从一下三个方面考虑: 库表设计 慢 SQL 问题 误操作.程序 bug 时怎么办 一.库表设计 1.1.引擎选择 在 MySQL5.1 中,引入了新的插件式存储引擎体系结构,允许将存储引擎加载到正在运 ...
- Mysql数据库(十)MySQL性能优化
一.优化概述 为了提高MySQL数据库的性能,不要进行一系列的优化措施.如果MySQL数据库需要进行大量的查询操作,那么就需要对查询语句进行优化.对于耗费时间的查询语句进行优化,可以提高整体地查询速度 ...
- CentOS下mysql数据库data目录迁移和配置优化
目录迁移 关闭数据库服务 service mysqld stop 复制数据库 mv /var/lib/mysql /data/mysql # 或者使用cp -a复制 # 这两个命令都会带权限到新目录去 ...
- MySQL高级知识(六)——索引优化
前言:索引优化的目的主要是让索引不失效,本篇通过相关案例对索引优化进行讲解. 0.准备 创建经典的tb_emp表. DROP TABLE IF EXISTS `tb_emp`; CREATE TABL ...
- mysql千万级数据量根据索引优化查询速度
(一)索引的作用 索引通俗来讲就相当于书的目录,当我们根据条件查询的时候,没有索引,便需要全表扫描,数据量少还可以,一旦数据量超过百万甚至千万,一条查询sql执行往往需要几十秒甚至更多,5秒以上就已经 ...
- MySQL性能优化方法三:索引优化
原文链接:http://isky000.com/database/mysql-performance-tuning-index 大家都知道索引对于数据访问的性能有非常关键的作用,都知道索引可以提高数据 ...
随机推荐
- zabbix 添加 微信、邮件 媒介详解
1:zabbix 添加 微信.邮件 媒介. 1.2:发送告警邮件 1:一次完整的监控流程可以简单描述为: Host Groups (设备组) ->Hosts ( ...
- HDU1160:FatMouse's Speed(最长上升子序列,不错的题)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1160 学的东西还是不深入啊,明明会最长上升子序列,可是还是没有A出这题,反而做的一点思路没有,题意就不多说 ...
- jenkins slave启动报错:hudson.util.IOException2: Slave JVM has terminated. Exit code=126
添加mac slave节点报错如下:Expanded the channel window size to 4MB [11/07/14 19:11:54] [SSH] Starting slave p ...
- 基于java的网络爬虫框架(实现京东数据的爬取,并将插入数据库)
原文地址http://blog.csdn.net/qy20115549/article/details/52203722 本文为原创博客,仅供技术学习使用.未经允许,禁止将其复制下来上传到百度文库等平 ...
- class-dump安装与使用
简介 class-dump is a command-line utility for examining the Objective-C segment of Mach-O files. It ge ...
- ruby中的self
self,自己,在ruby中表示当前对象或默认对象.程序执行的任一时刻,有且仅有一个self. 1.谁成为self,在什么位置成为self? 要知道哪个对象是self,就必须知道当前的上下文.上下文主 ...
- usermod命令、用户密码管理、mkpasswd命令
3.4 usermod命令--更改用户帐户属性 -a|--append ##把用户追加到某些组中,仅与-G选项一起使用 -G|--groups ##把用户追加到某些组中,仅与-a选项一起使用:把该用户 ...
- laravel request 增加字段
https://segmentfault.com/q/1010000006898668 $input = $request->only(['username', 'password']); // ...
- sparkSQL实战详解
摘要 如果要想真正的掌握sparkSQL编程,首先要对sparkSQL的整体框架以及sparkSQL到底能帮助我们解决什么问题有一个整体的认识,然后就是对各个层级关系有一个清晰的认识后,才能真正的 ...
- 20135320赵瀚青LINUX第六周学习笔记
赵瀚青原创作品转载请注明出处<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 概述 这周主要讲解的是进程. ...