MySQL 索引失效总结

1、全值匹配我最爱,最左前缀要遵守

         条件与索引一一对应

2、带头大哥不能死,中间兄弟不能断

            组合索引

            如果索引了多个列,要遵守最佳左前缀法则。指的是查询从索引的最左前列开始 并且不跳过索引中的 列。 正确的示例参考上图。

3、索引列上少计算,范围之后全失效

      不要进行这些操作:计算、函数、自动/手动类型转换,不然会导致索引失效而转向全表扫描

     不能继续使用索引中范围条件(bettween、<、>、in等)右边的列   

4、LIKE符号写最右,覆盖索引不写星

       尽量使用覆盖索引(只查询索引的列),也就是索引列和查询列一致,减少select *  ;

       索引字段使用like以通配符开头(‘%字符串’)时,会导致索引失效而转向全表扫描 ;

       由结果可知,like以通配符结束相当于范围查找,索引不会失效。与范围条件(bettween、<、>、in等)不同的是:不会导致右边的索引失效。   

5、不等空值还有or,索引失效要少用

       索引字段上使用(!= 或者 < >)判断时,会导致索引失效而转向全表扫描 注:主键索引会使用范围索引,辅助索引会失效

       主键字段上不可以使用 null;

       索引字段上使用 is null 判断时,可使用索引;

       主键非空 不使用索引;

       索引字段使用 or 时,会导致索引失效而转向全表扫描  

6、var引号不能丢,SQL高级也不难

      索引字段是字符串,但查询时不加单引号,会导致索引失效而转向全表扫描  ;

7、分组之前必排序,一定要上索引啊


常用案例

----来自kkb笔记

你可能感兴趣的:(MySQL 索引失效总结)