外观
一句话答案
聚簇索引(主键)叶子存完整行数据,非聚簇索引(二级索引)叶子存主键值,查完整数据需回表。
核心要点
InnoDB: 主键索引=聚簇索引 / 二级索引=非聚簇索引(叶子存主键ID→需回表)
回表: 通过二级索引找到主键 → 再通过主键索引查完整行
覆盖索引: 索引包含查询所需全部字段 → 无需回表
追问与易错
追问方向:
- 为什么建议自增 ID 做主键?
- 非聚簇索引一定要回表吗?
- InnoDB 必须有主键吗?
易错点:
- ❌ 非聚簇索引直接存行数据——存的是主键值
- ❌ MyISAM 也有聚簇索引——MyISAM 都是非聚簇
💡 记忆锚点
聚簇索引像按身份证号排序的档案柜——找到号码就直接拿到完整档案(叶子存全行数据)。非聚簇索引像一本按姓名排序的索引卡片——卡片上只写了身份证号,要看完整档案还得去档案柜再查一趟(回表)。如果卡片上就写了你想看的所有信息,那就不用跑第二趟了(覆盖索引)。