外观
一句话答案
区分度高的列放前面,WHERE 常用列+ORDER BY 列+SELECT 覆盖列,范围查询列放最后。
核心要点
设计原则:
- 最左前缀:查询必须从最左列开始
- 区分度高的列在前(选择性高)
- 尽量覆盖索引(避免回表)
- 范围查询列放最后(>/<会中断后续列的索引使用)
经验公式: WHERE常用列 + ORDER BY列 + SELECT覆盖列
追问与易错
追问方向:
- 等值和范围列怎么排序?
- 怎么判断索引是否冗余?
- 索引建多了有什么危害?
易错点:
- ❌ 每个查询都建索引——合理设计联合索引一个顶多个
- ❌ 忽略更新频率
💡 记忆锚点
联合索引设计像排兵布阵:区分度高的兵放前排(过滤效果好),等值查询列打头阵,范围查询列殿后(范围后面的列用不上),最后看能不能把 SELECT 的列也塞进去凑成覆盖索引(避免回表)。一个好的联合索引能一个顶三个单列索引。