面试常问面试冲刺 · MySQL
联合索引的最左前缀是什么?哪些情况下索引会失效?
先自己想一想,再看参考要点
参考要点
- 联合索引先按第一列排序、再按第二列,所以条件要从最左列开始连续使用才能定位,与 WHERE 中的书写顺序无关,范围条件之后的列一般不能再缩小扫描范围(带等号时例外)
- 常见的无法用索引定位的情况:缺少最左列(8.0.13 起少数情况可跳跃扫描)、对索引列用函数(可建函数索引)、字符串列与数字比较、LIKE 以 % 开头、OR 一侧没有索引
- 匹配的行太多时,优化器按成本选择全表扫描
学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。