Sequential Guid主键列应该是聚簇索引吗?

时间:2009-11-18 16:24:17

标签: sql-server sql-server-2008 guid clustered-index newsequentialid

使用顺序guid的目的是使用聚簇索引而不会出现聚簇索引中通常存在的高级碎片(如果它是常规guid),对吗?

2 个答案:

答案 0 :(得分:7)

首先澄清一下,主键和聚簇索引是两个独立且不同的东西,即一个不耦合到另一个(PK可以是非聚簇的,聚簇索引可以是非PK)。

这一点,我认为你要求更多“应该将顺序GUID用作聚簇索引”。这是一个有问题的问题,但Kimberly Tripp has discussed this可能是我见过的最好的人。请注意,该文章引用了PK,但在文章中,她提到了考虑因素主要适用于聚集索引选择与PK。

假设您已经决定使用GUID作为群集密钥(可能是也可能不是这种情况),使用顺序GUID很可能是非顺序GUID的最佳选择,但是至少有一个场景,其中非顺序GUID可能是首选的(虽然这是一个非常罕见,非常高级的场景,你必须基本上理解你的系统和SQL服务器,以至于你毫不怀疑这应该被使用 - 会有与存储设备上的热点有关,并在群集的不同位置传播大量写入。)

答案 1 :(得分:2)

是的,你是对的。