SQL Server中主键(群集)和群集唯一索引之间的区别

时间:2013-10-21 13:26:45

标签: sql-server indexing clustered-index primary-key-design

我理解什么是主键和唯一聚簇索引我的问题是为什么在定义唯一聚簇索引时需要主键。只考虑性能良好的数据库设计。

根据我的理解,当我们定义一个集群唯一索引时,它会对数据进行物理排序,这对于表性能是必需的,我们是否定义主键是无关紧要的

2 个答案:

答案 0 :(得分:5)

就SQL Server而言,非可空列的唯一索引与PK之间没有实际区别。

强制唯一性,可以是群集的或非群集的,并且可以由外键约束引用。

有些工具可能会预期会定义主键。

关于聚集索引“物理排序数据”的观点,这有点误解。

仅当CI的碎片为零时才会出现这种情况。例如,在页面拆分之后,聚簇索引页面完全可能在文件中出现故障。

答案 1 :(得分:4)

  

“为什么在定义唯一聚簇索引时需要主键”

不是。

默认情况下,在SQL Server中声明具有主键的表时,它会在主键上添加聚簇索引(如果未指定单独的聚簇索引)。

但是聚簇索引不必位于构成表主键的列上。

您可以创建一个表,其中主键具有唯一的非聚集索引,聚簇索引位于其他位置。