聚集索引和非聚集索引之间的区别是什么?


当前回答

优点:

聚集索引适用于范围(例如:select * from my_table where my_key在@min和@max之间)

在某些情况下,如果使用orderderby语句,DBMS将不需要做排序工作。

缺点:

聚集索引可能会减慢插入速度,因为如果新键不是按顺序排列的,那么在放入记录时必须修改记录的物理布局。

其他回答

聚集索引

一个表只能有一个聚集索引。 通常在主键上进行。 聚集索引的叶节点包含数据页。

非聚簇索引

一个表只能有249个非聚集索引(直到sql version 2005的后续版本支持多达999个非聚集索引)。 通常在任意键上。 非聚集索引的叶节点不包含数据页。相反,叶节点包含索引行。

聚类基本上意味着数据在表中的物理顺序。这就是为什么每个表只能有一个。

非聚集意味着它“只是”一个逻辑顺序。

聚集索引

聚集索引检索更快,插入更慢 和更新。 一个表只能有一个聚集索引。 不需要额外空间来存储逻辑结构。 确定在磁盘上存储数据的顺序。

非聚簇索引

非聚集索引在检索数据时较慢,在检索数据时较快 插入和更新。 一个表可以有多个非聚集索引。 需要额外的空间来存储逻辑结构。 对磁盘上存储数据的顺序没有影响。

你可能已经阅读了以上文章中的理论部分:

-聚类索引,我们可以看到直接指向记录,即它的直接,所以它需要更少的时间进行搜索。此外,它不会占用任何额外的内存/空间来存储索引

而在非聚集索引中,它间接指向聚集索引,然后它将访问实际的记录,由于它的间接性质,它将花费更多的时间来访问。此外,它需要自己的内存/空间来存储索引

优点:

聚集索引适用于范围(例如:select * from my_table where my_key在@min和@max之间)

在某些情况下,如果使用orderderby语句,DBMS将不需要做排序工作。

缺点:

聚集索引可能会减慢插入速度,因为如果新键不是按顺序排列的,那么在放入记录时必须修改记录的物理布局。