七字口诀, mysql索引失效的情况
模型数空运最快
模:使用like进行模糊查询的时候,以百分号%开头的,索引就会失效。
型:代表数据类型,数据类型错误了,索引也会失效。
数:函数,对索引的字段使用内部函数的,索引也会失效。这种情况,应该建立基于函数的索引。
空:null,索引不存储空值,如果没有声明nou null,数据库会认为有可能存在空值,也不会按照索引进行计算。
运:运算,对索引列进行加减乘除等运算的,会造成索引失效。
最:复合索引中索引列的顺序非常重要,如果不是按照索引列最左列开始查找,则无法使用索引。
快:全表扫描最快,如果数据库认为全表扫描更快的时候,它就不会使用索引。
另外加一条
有or必全有索引:如果条件中有or,部分有索引的字段也不会用。如果想用or,又想用索引,那就要所有条件字段都加索引。
没必要使用索引的情况
1.唯一性差的字段不用。
2.频繁更新的字段不用。
3.where子句中没有的字段不用。
4.索引使用<>时,不用索引。