一、核心前提:索引的 “结构” 决定命中规则
InnoDB 的索引(除全文索引外)都是B + 树结构,分为两类:
聚簇索引:主键索引,叶子节点存储整行数据;
二级索引:非主键索引(唯一索引、普通索引),叶子节点存储主键值(用于回表)。
所有索引命中规则,本质都是围绕 B + 树的最左前缀匹配展开的。
二、索引命中的核心规则(按优先级排序)
- 最左前缀匹配原则(组合索引的核心)
这是组合索引命中的第一规则,简单说:组合索引的字段顺序决定了查询条件能否命中,必须从最左边的字段开始匹配,中间不能跳过。
举个例子:组合索引 idx_delete_warehouse (delete_flag, warehouse_id)
| 查询条件 | 是否命中索引 | 原因 |
|---|---|---|
| WHERE delete_flag=0 | ✅ 命中 | 匹配最左前缀(仅第一个字段) |
| WHERE delete_flag=0 AND warehouse_id=‘1001’ | ✅ 命中 | 匹配最左前缀(前两个字段) |
| WHERE warehouse_id=‘1001’ | ❌ 未命中 |
订阅专栏 解锁全文

7331

被折叠的 条评论
为什么被折叠?



