mysql高级索引分析,索引失效
2019-03-07 01:38
239 查看
一,索引分析
1,单表
2,两表
3,三表
join优化
尽可能减少join语句中的nestedLoop(嵌套循环链接)的循环次数:永远用小结果集驱动大结果集
优先优化NestedLoop(嵌套循环链接)的内层循环;
保证join语句中被驱动表上join条件字段已经被索引;
当无法保证驱动表join条件字段被索引且内存资源充足的前提下,不要太令色join buffer的设置
二,索引失效
1,全匹配最好
2,最佳左前缀法则:查询是不跳过多值索引的中间值;
3,不在索引上做任何操作(计算,函数,自动or手动类型转换),会导致索引失效全表扫描;
4,存储引擎不能使用索引中范围条件,右边的列
5,尽量使用覆盖索引(只访问索引的查询(索引的列和查询的列一致)),减少select *;
6,mysql在使用不等于(!=或<>)时无法使用索引,导致全表扫描,但是like后面不失效;
7,is null,is not null也无法使用索引;
8,like以通配符开头(%abc)mysql索引会失效变成全表扫描;
解决办法覆盖索引,select后面字段建立索引,不要使用
*;
9,字符串不加单引号索引失效;
10,少用or用它来连接时索引失效;
注意:
order by的顺序必须和索引一致不然也会using filesort;
但是order by前,查询条件等于一个定制,再使用order by 排序,不会出现using filesort;
相关文章推荐
- mysql高级----索引优化(一):索引分析
- mysql唯一索引失效原因分析
- Mysql索引会失效的几种情况分析
- MySQL高级 之 索引失效与优化详解
- MySQL高级 之 索引失效与优化详解
- mysql索引失效的五种情况分析
- Mysql索引会失效的几种情况分析
- MySQL高级知识-查询与索引优化分析
- mysql高级----索引优化(二):索引失效案例(应该避免)
- MySQL高级索引优化分析
- mysql索引失效的五种情况分析
- MySQL高级第二章——索引优化分析
- mysql高级之索引失效与优化详解
- Mysql索引会失效的几种情况分析
- mysql索引失效的五种情况分析
- Mysql索引会失效的几种情况分析
- MySQL索引失效情况分析
- MySQL高级 之 索引面试题分析
- MySQL 索引失效问题分析
- Mysql索引会失效的几种情况分析