2

可以将非唯一列定义为聚集索引和非聚集索引。但是,在聚集索引的情况下,如果列未定义为唯一,SQL Server 会向索引列添加一个 4 字节整数。这样做是为了在内部保持记录的“唯一性”,即使两个或多个记录可能具有该列的值。为什么在非聚集索引的情况下不需要这个整数?

4

2 回答 2

7

非聚集索引已包含聚集索引列,因此它可以引用与其关联的确切行。因此,对于聚集索引上的唯一标识符,非聚集索引也将包括唯一标识符。

这里有一个很好的解释:Understanding and Examining the Uniquifier in SQL Server

于 2012-09-07T17:39:51.270 回答
0

我相信这与行定位器有关。

非聚集索引行的宽度 = 非聚集索引列的宽度 + 聚集索引列的宽度 = 列数据类型的大小 + 列数据类型的大小。

于 2012-09-07T17:41:02.323 回答