Skip to content
极高进阶

一句话答案

聚簇索引(主键)叶子存完整行数据,非聚簇索引(二级索引)叶子存主键值,查完整数据需回表。

核心要点

InnoDB: 主键索引=聚簇索引 / 二级索引=非聚簇索引(叶子存主键ID→需回表)

回表: 通过二级索引找到主键 → 再通过主键索引查完整行

覆盖索引: 索引包含查询所需全部字段 → 无需回表

追问与易错

追问方向:

  • 为什么建议自增 ID 做主键?
  • 非聚簇索引一定要回表吗?
  • InnoDB 必须有主键吗?

易错点:

  • ❌ 非聚簇索引直接存行数据——存的是主键值
  • ❌ MyISAM 也有聚簇索引——MyISAM 都是非聚簇

💡 记忆锚点

聚簇索引像按身份证号排序的档案柜——找到号码就直接拿到完整档案(叶子存全行数据)。非聚簇索引像一本按姓名排序的索引卡片——卡片上只写了身份证号,要看完整档案还得去档案柜再查一趟(回表)。如果卡片上就写了你想看的所有信息,那就不用跑第二趟了(覆盖索引)。