# MySQL

# MySQL中索引失效是怎么回事?

今天学习五种『索引失效』的情况:

  1. 被索引字段发生了隐式类型转换;
  2. 被索引字段使用了表达式计算;
  3. 被索引字段使用了函数;

这三种情况,都相当于被索引字段上发生了某种计算。这时,MySQL 的 SQL 语句执行器无法预估计算后被索引字段所对应的 BTREE 索引树的叶子节点排列情况,因而索引无法被使用。

  1. like 关键字后,使用了左模糊匹配;
  2. 使用的索引列,不是联合索引的最左列。

这两种情况,都违反了 BTREE 索引树的检索过程中要遵从的最左匹配原则,最终也会导致索引树无法被使用。

Tip:可以使用 explain 关键字,来查看本次 SQL 是否使用了索引。