我看过各种文章都指向使用以下模式:
ID
(uniqueidentifier
) : PK,非集群ClusteredID
(int
) : 索引,聚集 (IDENTITY)- 我的其他专栏(各种)
我对这种模式的解释是,它允许使用 a 来标识记录uniqueidentifier
(这在许多情况下很有用),但这意味着聚集索引不会因为生成的int identity
列值的增量排序而变得如此碎片化。
到目前为止,这一切对我来说都很有意义。
我不完全理解的是:
如果唯一标识符是uniqueidentifier
,那么在相关表中将其用作 FK 对我来说是有意义的。现在,当执行连接两个表的 select 语句时,SQL Server
将在uniqueidentifiers
. 但是,看到它实际上是聚集的 int 索引,那么我会认为 int 上的集群不会有助于连接的性能。
如果我上面的假设是正确的,那么我不会欣赏添加聚集 int 索引的好处。
因此,我想我的假设是不正确的。谁能告诉我我的想法哪里出错了?