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

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

我正在使用SQL Server 2005。

有帮助吗?

解决方案

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top