SQL Server中唯一标识符列上的群集/非群集索引

时间:2009-05-04 17:41:03

标签: sql-server indexing uniqueidentifier

我已经阅读了这里的各种问题/答案,基本上表明在uniqueidentifier列上拥有聚簇索引是出于性能原因的不良选择。无论如何,我需要使用uniqueidentifier作为我的主键,我不想使用newsequentialid(),因为生成的值彼此太相似(我需要更多随机ID,因此用户无法[合理]'猜测'另一个ID)。

那么,对这个PK进行索引的最佳方法是什么?即使此列上的聚簇索引不理想,它是否优于“唯一的非聚集”索引?

我正在使用SQL Server 2005。

1 个答案:

答案 0 :(得分:9)

首先,如果您尝试使用NEWID()来实现随机性(不仅仅是随意看),那么您就遇到了麻烦。

它通常不是理想的选择,因为其他索引将引用聚簇索引键,而长聚簇索引键将降低所有索引的性能。您可以创建一个IDENTITY整数列,并将其作为聚簇索引,并在uniqueidentifier列上创建一个非聚集的唯一索引。