MySQL索引失效

206 阅读1分钟

规律

场景1(用到索引)

用到了索引情况, type = ref

场景2(没用到索引)

  • 没有用到索引, 因为最左匹配原则
  • 就是如果有key1, key2, key3, 需要(key1) (key1, key2) (key1, key2, key3), "带头大哥不能死, 中间兄弟不能断", 带头大哥没了就全表扫描, 中间断了, 后面就不会用扫描了
  • 带头没了

场景3(索引部分失效)

  • 中间断了 ref少了const key_len短了, 实际后面失效了

场景4(用了mysql函数 索引失效)

场景5(范围失效)

  • 用到了排序, 范围后检索失效了, 因此type=range

场景6(覆盖索引 好)

场景7 != <> 无法使用索引

场景8 is null无法使用索引 (8.0优化了)

场景9 like

  • 推荐like百分号写右边
失效了

没有失效

  • 解决方案 覆盖索引

场景10 字符串没写单引号

  • 避免类型转换

场景11 少用or(新版本好像更改了)