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


当前回答

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

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

其他回答

聚集索引

每张桌子只有一个 由于数据按索引顺序物理存储,因此读取速度比非集群更快

非聚类索引

每张表可以使用多次吗 插入和更新操作比聚集索引更快

当选择使用索引的字段的数据时,这两种类型的索引都将提高性能,但会降低更新和插入操作的速度。

由于插入和更新较慢,聚集索引应该设置在一个字段上,通常是增量的,即Id或时间戳。

SQL Server通常只使用选择性高于95%的索引。

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

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

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

聚集索引实际上描述了记录在磁盘上物理存储的顺序,因此只能有一个聚集索引。

非聚集索引定义的逻辑顺序与磁盘上的物理顺序不匹配。

聚集索引物理地存储在表上。这意味着它们是最快的,并且每个表只能有一个聚集索引。

非聚集索引单独存储,您可以拥有任意数量的索引。

最好的选择是在最常用的唯一列上设置聚集索引,通常是PK。在表中应该始终有一个精心选择的聚集索引,除非有一个非常令人信服的理由——想不出一个,但是,嘿,可能有——不这样做。

优点:

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

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

缺点:

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