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