为什么SQL Server的一个4字节整数添加到非唯一聚集索引(Why does SQL Serve

2019-06-27 23:37发布

这是可能的聚集和非聚集索引定义非唯一列。 但是,SQL Server增加了一个4字节整数的索引列中聚簇索引的情况下,如果该列没有被定义为唯一的。 这样做是为了保持“独特性”记录的内部,即使两个或两个以上的记录可能有该列的值。 为什么不是这个整数必要在非聚集索引的情况下?

Answer 1:

阿非聚集索引已经包含了聚簇索引列,以便它可以参考的确切排它关联到。 因此与聚簇索引的唯一标志,非聚集的索引也将包括唯一标志。

一个很好的解释在这里: 了解和SQL Server检查的唯一标志



Answer 2:

我相信,这与该行定位做。

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



文章来源: Why does SQL Server add a 4 byte integer to non-unique clustered indexes