SQL Server:非null唯一与主键

时间:2010-02-14 22:38:44

标签: sql-server database primary-key

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

  1. 我将A作为主键。
  2. 我为A创建了一个UNIQUE约束。
  3. 区别在哪里?我知道主键是什么,我知道w.r.t有概念的区别。数据库理论。但是SQL Server中的实际区别是什么? SQL Server数据库引擎的行为有何不同?在这两种情况下,表的聚集索引都在A;在这两种情况下,我都可以通过外键引用A

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

2 个答案:

答案 0 :(得分:5)

没有。真的没什么区别。优化器以相同的方式处理它。某些圈子甚至还在争论主键本身是否真的有必要。 (虽然没有人会认为你应该为每个表定义至少一个唯一的索引/约束。)

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

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

答案 1 :(得分:3)

我从来没有得到任何真正的区别,只有概念。但我也想过这么多次。