外观
一句话答案
覆盖索引指查询字段全在索引中无需回表,explain 中 Extra 显示 Using index,是 SQL 优化的重要手段。
核心要点
回表过程: 二级索引查到主键值 → 主键索引查完整行数据
优化: 建联合索引覆盖 SELECT 的字段 → 避免回表 → 性能大幅提升
追问与易错
追问方向:
- 怎么判断用了覆盖索引?
- 覆盖索引为什么提升性能?
- 联合索引顺序对覆盖索引有影响吗?
易错点:
- ❌ SELECT * 也能走覆盖索引——不行
- ❌ 为了覆盖建很宽的联合索引——影响写入
💡 记忆锚点
回表就是查了两次索引树:先在二级索引的"目录"里查到主键号码,再拿号码去聚簇索引的"档案柜"翻完整资料。覆盖索引就是在目录上直接印了你要的所有信息,不用再跑一趟档案柜——EXPLAIN 看到 Using index 就说明免了这趟跑腿。所以别写 SELECT *,按需查字段才能享受覆盖索引。