【问题标题】:Non-clustered GUID primary key OR clustered int primary key and GUID secondary key with unique index?非聚集 GUID 主键或聚集 int 主键和具有唯一索引的 GUID 辅助键?
【发布时间】:2014-07-30 23:25:30
【问题描述】:
这些替代方案的优缺点?
- 具有非聚集索引的非顺序 GUID 主键
- 具有带聚集索引的顺序整数主键和具有唯一索引的随机 GUID 作为辅助键
我将在 GUID 键上获取对象,但我想知道出于任何其他原因使用带有聚集索引的顺序主键是否有任何好处?
我当然可以使用顺序 GUID,然后同时拥有 GUID 和聚集索引,但抛开这个选项,还有什么更好的选择?
【问题讨论】:
标签:
sql-server
primary-key
clustered-index
【解决方案2】:
优点是连接。我经常使用这种方法 - 一个非集群唯一 GUID 作为对象的标识符,一个 int / bigint it 字段作为主键,然后也用于连接。
【解决方案3】:
如果您在表上创建附加索引,这些索引将通过其主键值引用表数据。因此,如果您保持 PK 列较小,您将拥有优势。我的答案是创建一个小的 int (IDENTITY) 主键,聚集,并在 GUID 值上具有唯一的非聚集索引。