聚簇索引 VS 非聚簇索引
聚簇索引 VS 非聚簇索引
聚簇索引是一种特殊的索引类型,其索引结构与数据行的物理存储顺序一致。
区分聚簇索引和非聚簇索引的主要依据是索引与数据行的物理存储方式之间的关系。
1、 数据存储方式
-
聚簇索引:
- 索引的键值顺序决定了数据行的物理存储顺序。
- 数据行直接存储在索引的叶子节点中。
- 表数据按索引键值排序存储。
-
非聚簇索引:
- 索引的键值顺序与数据行的物理存储顺序无关。
- 索引的叶子节点存储的是指向数据行的指针(如行 ID 或主键值)。
- 数据行独立存储,索引仅包含指向数据行的引用。
-
在大多数数据库管理系统(如 MySQL InnoDB、SQL Server)中,主键默认是聚簇索引。
-
每张表只能有一个聚簇索引。
2、创建索引样例
-
聚簇索引:
CREATE CLUSTERED INDEX idx_name ON table_name(column_name);
-
非聚簇索引:
CREATE NONCLUSTERED INDEX idx_name ON table_name(column_name);