哪些情况下索引会失效?
先自己想一想,再看参考要点
参考要点
- 没有从联合索引的最左列开始,或者依赖联合索引中范围条件之后的列缩小扫描范围(范围条件带等号时例外)
- 对索引列使用函数(例如 DATE(create_time)),或者发生隐式类型转换(例如字符串列与数字比较)
- LIKE 以 % 开头,OR 的一侧没有索引
- 匹配的行太多,优化器估算全表扫描更快,常见于 !=、NOT IN 和大范围的条件
- 这些是普通索引上的常见情况,只查索引中的列时可能改为扫描整个索引,缺少最左列时 8.0.13 起可能用跳跃扫描,对表达式建函数索引后函数条件也能走索引