聚簇索引:
- 存储方式: 聚簇索引的叶子节点直接存储了表中的行数据,而不是存储指向数据的指针或者主键。这意味着聚簇索引决定了表中数据的物理存储顺序。
- 查询效率: 由于聚簇索引存储了实际的行数据,因此对于使用聚簇索引的列进行查询时,可以直接在索引树中找到相应的行,查询效率较高。
- 表中只能有一个: 一张表只能有一个聚簇索引,通常是主键索引,因为主键是唯一的。
非聚簇索引:
- 存储方式: 非聚簇索引的叶子节点存储的是索引列的值以及对应的主键值,而不是实际的行数据。如果查询的列不是索引列,那么需要进行回表查询,通过主键再去聚簇索引中找到实际的行数据。
- 查询效率: 非聚簇索引查询效率相对较低,因为在使用非聚簇索引进行查询时,通常需要两次查找:一次查找非聚簇索引,另一次通过主键回表查找实际数据。
- 数量上的限制: 一张表可以有多个非聚簇索引。
总结:
- 存储内容不同: 聚簇索引存储实际行数据,而非聚簇索引存储索引列值和对应主键值。
- 查询效率: 聚簇索引查询效率高,非聚簇索引查询效率相对较低。
- 数量限制: 一张表只能有一个聚簇索引,但可以有多个非聚簇索引。