主键与唯一索引:与外键的性能差异?

Dan*_*iel 7 performance foreign-key sql-server index-tuning

如果您比较通过两个表之间的连接获取数据的查询,性能是否会有任何差异,其中与以下任一表存在关系:

  • 一个主键
  • 唯一索引

小智 4

它与性能本身无关,但它是一个概念问题。

使用 UNIQUE CONSTRAINT 来陈述事实。当您的索引恰好是唯一的(例如,因为您向其添加主键)时,请使用 UNIQUE INDEX。

根据场景:

首要的关键

  • 当您想为每一行保留一个标识符时。所以每一行都可以通过Key值获取。(因为pk唯一且不为空)

独特的钥匙

  • 当您想要在同一个表中已存在主标识符的情况下保留辅助标识符时。所以每一行都可以通过你的PK或者UK来获得。Unique将允许null,但只允许一次(允许单个null有什么用)。

笔记:

两者都可以是集群的或非集群的。创建约束时,您可以选择要为这些键使用哪种类型的索引。

资料来源:

http://social.msdn.microsoft.com/Forums/en/transactsql/thread/290619be-b892-4f52-99e0-d8e2ff80aec4

http://bytes.com/topic/sql-server/answers/83999-unique-constraint-vs-unique-index-ms-sql-2000-a