MySQL 索引失效总结
2019-10-15 本文已影响0人
愤怒的哪吒
1、全值匹配我最爱,最左前缀要遵守
条件与索引一一对应
2、带头大哥不能死,中间兄弟不能断
组合索引
如果索引了多个列,要遵守最佳左前缀法则。指的是查询从索引的最左前列开始 并且不跳过索引中的 列。 正确的示例参考上图。
3、索引列上少计算,范围之后全失效
不要进行这些操作:计算、函数、自动/手动类型转换,不然会导致索引失效而转向全表扫描
不能继续使用索引中范围条件(bettween、<、>、in等)右边的列
4、LIKE符号写最右,覆盖索引不写星
尽量使用覆盖索引(只查询索引的列),也就是索引列和查询列一致,减少select * ;
索引字段使用like以通配符开头(‘%字符串’)时,会导致索引失效而转向全表扫描 ;
由结果可知,like以通配符结束相当于范围查找,索引不会失效。与范围条件(bettween、<、>、in等)不同的是:不会导致右边的索引失效。
5、不等空值还有or,索引失效要少用
索引字段上使用(!= 或者 < >)判断时,会导致索引失效而转向全表扫描 注:主键索引会使用范围索引,辅助索引会失效
主键字段上不可以使用 null;
索引字段上使用 is null 判断时,可使用索引;
主键非空 不使用索引;
索引字段使用 or 时,会导致索引失效而转向全表扫描
6、var引号不能丢,SQL高级也不难
索引字段是字符串,但查询时不加单引号,会导致索引失效而转向全表扫描 ;
7、分组之前必排序,一定要上索引啊

----来自kkb笔记