index-failure

什么是索引失效?

  • 查询优化器放弃了使用索引,转而进行全表扫描(Full Table Scan)。这会导致查询性能急剧下降

索引失效场景:

  • 联合索引(a、b、c),查询条件没有从索引的最左边列(a)开始,或者中间跳过了某一列。
  • 在索引列上做计算、函数或类型转换
  • 模糊查询以通配符 % 开头
  • 联合索引中,一旦某列使用了范围查询(>, <, between, like '...'),该列之后的索引列都会失效。
  • 如果 OR 连接的字段中有一个没有索引,MySQL 为了不漏掉数据,往往会放弃所有索引,直接全表扫描。

验证是否走索引的方式

EXPLAIN SELECT * FROM table_name WHERE ...;


Comments