CS-Notes 学习笔记
面试常问Java 后端 · MySQL

哪些情况下索引会失效?

先自己想一想,再看参考要点

参考要点

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

学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。