MySQL索引最左原则:从原理到实战的深度解析
一、什么是索引最左原则?
索引最左原则是MySQL复合索引使用的核心规则,简单来说:
“当使用复合索引(多列索引)时,查询条件必须从索引的最左列开始,且不能跳过中间的列,否则索引将无法完全生效”
为什么会有这个原则?
这与B+树索引的存储结构密切相关:
- 复合索引按照定义时的列顺序构建
- 数据先按第一列排序
- 第一列相同的情况下按第二列排序
- 依此类推形成层级结构
二、3种典型场景分析
场景1:完美匹配索引顺序
-- 创建索引
CREATE INDEX idx_user ON users(country, city, age);
-- 有效查询
SELECT * FROM users
WHERE country='China'
AND city='Beijing'
AND age=30;
✅ 索引使用情况:同时使用三列进行精确查找,走全索引扫描
场景2:缺少最左列
-- 无效查询
SELECT * FROM users
WHERE city='Shanghai'
AND age=25;
❌ 索引失效原因:没有最左列country,无法利用索引的排序结构
场景3:中间断档查询