3.3.4 最左匹配原则

📅 2026/6/17 0:30:33
3.3.4 最左匹配原则
最左匹配原则(最左前缀原则)是理解 MySQL联合索引(组合索引)工作方式的基石。它直接决定了你写的 SQL 是否能高效利用索引。简单来说:对于联合索引(A, B, C),只有当查询条件包含最左列A或其连续前缀时,索引才能被用来进行快速查找。为什么?这要从 B+ 树的组织方式讲起。🧱 一、底层原理:联合索引的排序方式假设在orders表上创建联合索引idx_abc (A, B, C),这是一个二级索引,InnoDB 会单独维护一棵 B+ 树。这棵树不是分别对 A、B、C 排序,而是将(A, B, C)看做一个整体来进行排序:先按A排序。A相同时,按B排序。B相同时,按C排序。所以,这棵 B+ 树中的数据在逻辑上就像字典一样:先按 A 字母顺序,A 一样再按 B,B 一样再按 C。这就导致了:全局来看,A是绝对有序的,B是局部有序的,C更是局部有序的。跳过A直接查B:因为全局上B是无序的,索引无法帮你快速定位,只能从头到尾扫描整个索引(全索引扫描),效率极低。跳过A和B直接查C:同理,C也是全局无序的,索引失效。这就是最左前缀原则的本质。🎯 二、命中与失效的场景详解以下用联合索引idx_abc (A, B, C)为例。✅ 1. 完全匹配所有列WHEREA=1ANDB=2ANDC=3所有列都是等值查询,完美匹配索引顺序,直接精确定