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

dec*_*dev 4 sql-server indexing uniqueidentifier

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

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

我正在使用SQL Server 2005.

Meh*_*ari 9

首先,如果你试图用来NEWID()实现随机性(不只是看起来随机),你就有麻烦了.

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