我已经阅读了这里的各种问题/答案,基本上表明在uniqueidentifier列上拥有聚簇索引是出于性能原因的不良选择。无论如何,我需要使用uniqueidentifier作为我的主键,我不想使用newsequentialid(),因为生成的值彼此太相似(我需要更多随机ID,因此用户无法[合理]'猜测'另一个ID)。
那么,对这个PK进行索引的最佳方法是什么?即使此列上的聚簇索引不理想,它是否优于“唯一的非聚集”索引?
我正在使用SQL Server 2005。
答案 0 :(得分:9)
首先,如果您尝试使用NEWID()
来实现随机性(不仅仅是随意看),那么您就遇到了麻烦。
它通常不是理想的选择,因为其他索引将引用聚簇索引键,而长聚簇索引键将降低所有索引的性能。您可以创建一个IDENTITY
整数列,并将其作为聚簇索引,并在uniqueidentifier
列上创建一个非聚集的唯一索引。