聚簇索引和非聚簇索引的区别
2025年8月24日小于 1 分钟
聚簇索引和非聚簇索引的区别
聚簇索引
- 聚簇索引中数据表的数据行本身按索引的顺序存储,索引和数据在一起。一个表只能有一个聚簇索引(因为数据的物理存储顺序只能有一种)。
- 叶子节点存储的是整行数据。
- 主键默认就为聚簇索引。
- 查找范围数据效率高(范围查询、排序、group by 等)。
非聚簇索引
- 非聚簇索引结构和数据分开存储,索引页存放键值和指向数据的指针(书签/行号/聚簇索引键),一个表可以有 多个非聚簇索引。
- 叶子节点存储的是索引键和指向数据的指针。
- 查找单个字段值很快,但如果查询字段不在索引里可能需要回表(先找到索引再去表中取数据),如果用到覆盖索引(索引中已包含所需的列),就不需要回表。