Answers:
主要区别在于唯一索引可以具有主键不允许的NULL值。是否聚集,这是主键与唯一键的实际实现之间的主要区别。
哦,事实是一张桌子可以有一个PK和许多UK :-)。
两者都是本质上的差异,而不是性能上的差异。否则,我认为没有任何区别。在任何PK或UK之后,SQL Server都会建立一个索引(取决于请求,是否集群),并且索引的使用方式对于源是透明的。
PRIMARY KEY
和之间NOT NULL UNIQUE
,前者将更难转换NULL UNIQUE
(尤其是如果约束已经由外键引用的话)。当然可以防止意外更改NOT NULL
为NULL
。
在聚集的主键和唯一的聚集索引之间,除了唯一的聚集索引可以具有NULL值之外,没有任何其他区别。
非唯一聚集索引具有一个唯一标识符,对于唯一值,必须处理该唯一标识符。
NOT NULL UNIQUE CLUSTERED
或(B)突出显示特定的UQ在元数据意义上是“特殊的”,即使RDMS是不可知的?