现象

(a,b,c) 联合索引已建,查询 WHERE b=? AND c=? 仍全表扫filesort

根因

B+ 树联合索引按最左列排序;跳过最左列 无法利用有序性(最左前缀原则)。

常见踩坑

  • 以为「三个列都在索引里」就任意顺序都能快。
  • 对首列 范围查询 后,右侧列 有时无法继续精确索引(依引擎与条件而定)。
  • 隐式类型转换导致列上函数,索引失效。

解决

  • 设计查询条件顺序与 业务高频路径 对齐;必要时 冗余索引(权衡写入)。
  • EXPLAINkey/rows/Extra
  • 避免对索引列 函数包裹(如 WHERE YEAR(t)=2026)。

总结

联合索引 = 电话号码分机:不接最左分机,后面往往白建。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐