非群集GUID主键或群集int主键和具有唯一索引的GUID辅助键?

时间:2014-06-10 09:04:24

标签: sql-server primary-key clustered-index

这些替代品的利弊?

  1. 具有非连续GUID主键和非聚集索引
  2. 具有聚簇索引的顺序整数主键和随机GUID作为具有唯一索引的辅助键
  3. 我将在GUID键上获取对象,但我想知道是否有任何因为任何其他原因而使用聚簇索引的顺序主键的好处?

    我当然可以使用顺序GUID,然后同时拥有GUID和聚集索引,但是把这个选项放在一边,有什么选择更好?

2 个答案:

答案 0 :(得分:0)

优点是加入。我经常使用这种方法 - 非群集的唯一GUID作为对象的标识符,int / bigint作为主键,然后也用于连接。

答案 1 :(得分:0)

我认为如果您只使用GUID获取记录,则不需要顺序整数主键。但是,如果您以任何其他方式查询表,那么我建议将代理整数主键作为聚簇索引。如果没有聚簇索引,您的表将成为堆,SQL Server将向每个记录添加行标识符,该记录可能大于您的代理键列。见这里:

http://msdn.microsoft.com/en-us/library/hh213609.aspx

如果可能的话,我还希望使用代理键而不是GUID来检索记录。

我希望这有所帮助。