【问题标题】:SQL Server: Non-null unique vs. Primary KeySQL Server:非空唯一与主键
【发布时间】:2011-01-16 19:31:55
【问题描述】:

假设我有一些表T 和一些非空字段AA 上有一个聚集索引。考虑以下两个选项:

  1. 我将A 设为主键。
  2. 我为A 创建了一个唯一约束。

区别在哪里?我知道主键是什么,并且我知道与 conceptual 不同。数据库理论。但是 SQL Server 中实际的区别是什么? SQL Server 数据库引擎的行为有何不同?在这两种情况下,表的聚集索引都在A;在这两种情况下,我都可以通过外键引用A

(激发这个问题的相关问题:Meaning of Primary Key to Microsoft SQL Server 2008

【问题讨论】:

    标签: sql-server database primary-key


    【解决方案1】:

    没有。真的没有什么区别。优化器以同样的方式对待它。某些圈子之间甚至存在关于主键本身是否真的必要的争论。 (尽管没有人会争辩说您应该为每个表定义至少一个唯一索引/约束)。

    反对“主键”概念的论据可能是这样的:如果表中有两列,并且它们都是唯一的且数据量相同,那么哪个成为 PK?确实是个好问题。

    无论如何,我总是使用 PRIMARY KEY 概念,因为从文档的角度来看它非常有用,而且它确实可以帮助人们理解您的意图。

    【讨论】:

      【解决方案2】:

      我从来没有得到任何真正的区别,只是概念上的。但我也想了很多次。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-03
        • 1970-01-01
        • 2017-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多