什么情况下会导致索引失效

xiaojiuaigc@163.com 发布于 2024-11-09 452 次阅读


(1). 违反最左前缀法则

如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始,并且不跳过索引中的列。匹配最左前缀法则,走索引:

违法最左前缀法则 , 索引失效:

如果符合最左法则,但是出现跳跃某一列,只有最左列索引生效:

2). 范围查询右边的列,不能使用索引

根据前面的两个字段 name , status 查询是走索引的, 但是最后一个条件address 没有用到索引。

3). 不要在索引列上进行运算操作, 索引将失效。

(4). 字符串不加单引号,造成索引失效。

由于,在查询是,没有对字符串加单引号, MySQL的查询优化器,会自动的进行类型转换,造成索引失效。

(5)以%开头的Like模糊查询,索引失效。如果仅仅是尾部模糊匹配,索引不会失效。如果是头部模糊匹配,索引失效
总结
  • 违反最左前缀法则
  • 范围查询右边的列,不能使用索引
  • 不要在索引列上进行运算操作, 索引将失效
  • 字符串不加单引号,造成索引失效。(类型转换)
  • 以%开头的Like模糊查询,索引失效