6

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

根据我的理解,当我们定义一个聚集唯一索引时,它会对数据进行物理排序,这是表性能所必需的,我们是否定义主键并不重要

4

2 回答 2

6

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

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

一些工具可能期望有一个定义的主键。

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

仅当 CI 的碎片为零时才适用。例如,在页面拆分之后,聚集索引页面完全有可能在文件中出现乱序。

于 2013-10-21T13:30:21.023 回答
4

“为什么我们定义唯一聚集索引时需要主键”

它不是。

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

但聚集索引不必位于包含表主键的列上。

您可以创建一个表,其中主键具有唯一的非聚集索引,而聚集索引在别处。

于 2013-10-21T13:29:03.380 回答