【问题标题】:Clustered/non-clustered index on unique identifier column in SQL ServerSQL Server 中唯一标识符列上的聚集/非聚集索引
【发布时间】:2010-10-23 16:40:59
【问题描述】:

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

那么,索引这个 PK 的最佳方法是什么?尽管此列上的聚集索引并不理想,但它是否比“唯一、非聚集”索引更好?

我使用的是 SQL Server 2005。

【问题讨论】:

    标签: sql-server indexing uniqueidentifier


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 2018-05-08
      • 2012-10-01
      • 2014-04-27
      • 2013-03-22
      相关资源
      最近更新 更多