【问题标题】:Joins etc. with GUID as Primary Key on SQL Server以 GUID 作为 SQL Server 上的主键的联接等
【发布时间】:2015-02-04 08:30:31
【问题描述】:

看这篇文章:

[What are the best practices for using a GUID as a primary key, specifically regarding performance?

我了解,如果我想使用 GUID 作为主键,那么这应该是非聚集 pk,然后还创建一个聚集 int 唯一索引 (autoinc)。

我只是想确认,通过上述设置,所有连接仍然可以正常工作,即。表与 GUID 主键字段相关? 此外,似乎 int 唯一索引字段在我的应用程序中没有相关性,我会在任何查询/插入/更新中完全忽略这一点?

【问题讨论】:

    标签: sql-server database-design primary-key guid


    【解决方案1】:

    除非您计划使用该字段来访问数据,否则在表中单调递增的数值字段上创建聚集索引是没有意义的。

    我建议您阅读 DBA.SE 上的 this post,了解有关集群和非集群主键的良好讨论。

    【讨论】:

    • 我怀疑可能是这种情况。我别无选择,因为我的 pk 是一个必须是非集群的 guid,很好。如果我省略了 int 唯一索引字段,这意味着该表将没有聚集索引,显然每个表都应该有一个聚集索引:msdn.microsoft.com/en-us/library/ms186342(v=sql.105).aspx
    • @A_L - 每个表可能都应该有一个聚集索引,但如果您不打算将它用于任何事情,则不是。聚集索引的要点是访问效率。如果您(永远)不使用聚集索引进行访问,那么拥有它真的没有多大意义。
    猜你喜欢
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    相关资源
    最近更新 更多