索引失效的情况

135 阅读1分钟

索引失效的情况有哪些?

  1. 违反最左前缀法则。如果索引了多列,要遵守最左前缀法则。指的是查询要从索引的最左一列开始,并且不跳过索引中的列。如果符合最左法则,但是出现跳跃某一列,只有最左列索引生效。比如:联合索引name_status_address, 在查询语句select * from table where name = 'deng' and address = '山东'中,只有name索引列生效,address索引列不生效。
  2. 范围查询右边的列,不能使用索引。比如:在查询语句select * from table where name = 'deng' and status > 1 and address = '山东'中,只有name、status索引列生效,address索引列不生效。
  3. 不要在索引列上进行运算操作,索引将失效。
  4. 字段类型不匹配,造成索引失效。MySQL的查询优化器,会自动进行类型转换,造成索引失效。
  5. 以%开头的like模糊查询,索引失效。如果仅仅是尾部模糊匹配,索引不会失效。如果是头部模糊匹配,索引失效。