在数据库中,索引是一种数据结构,用于提高查询性能和加速数据检索。聚集索引和非聚集索引是两种不同的索引类型。
1. 聚集索引(Clustered Index):
一个表只能有一个聚集索引,因为聚集索引决定了表的物理排序方式,所以被称为“物理排序”。
聚集索引是按照表中某列属性的值来建立的,而这个列属性的值就可以作为该记录在磁盘上存储位置的地址。这样,在进行查询时,如果按照该列属性搜索,则可以快速定位到符合条件数据行所对应磁盘块位置,并从该块中读取数据。
2. 非聚集索引(Non-Clustered Index):
一个表可以有多个非聚集索引。
非聚集索引也是按照列属性来生成的,但它不会改变物理排序。相反,在非聚集索引中保留了指向磁盘上实际数据所存储位置的指针。这意味着在进行查询时,在查找到满足条件的行之后还需要通过指针再去找到实际存储数据的位置。
综上所述,聚集和非聚集索引最大区别在于: 聚类使记录物理上按关键字顺序排列,而未聚集使记录行的顺序与特定键值无关。聚类索引在查询时,由于表中数据的物理排序方式,通常比非聚集索引更快。不过,在频繁更新表中数据的环境下,对聚类索引进行维护的代价也更高。