如果列NOT NULL UNIQUE CLUSTERED INDEX将是主键,则可能的性能更改

时间:2018-05-02 06:43:22

标签: sql-server database-indexes

如果将列声明为NOT NULL UNIQUE CLUSTERED INDEX,是否会使PRIMARY KEY对性能或其他任何内容进行任何实际更改?

2 个答案:

答案 0 :(得分:2)

它应该没有任何效果。在几个手势 1 中,PRIMARY KEYUNIQUE KEY相同,附加条件是所有列都被强制为非NULL。因此,将此列装饰为PRIMARY KEY不应导致实现该表的物理数据结构 2 发生任何变化。

CLUSTERED是一个完全独立的概念 - 有时与PRIMARY KEY混为一谈。如果表格中没有CLUSTERED INDEX并且添加了PRIMARY KEY,那么默认情况下,该表格也会定义为CLUSTERED INDEX。但是如果需要的话,这种行为可以被覆盖,而且这两种行为在实践中并没有结合在一起。

1 我实际上无法想到这方面的任何相关差异,但这只是为了避免挑剔,希望如此。

2 聚集索引和任何非聚集索引和统计信息。

答案 1 :(得分:1)

PRIMARY KEY不允许为空且必须是唯一的,约束NOT NULL UNIQUE也可以将类似的规则应用于PRIMARY KEY列中的列,但是,您的表只能有一个主要键,但可以有多个NOT NULL UNIQUE列。

NOT NULL UNIQUE CLUSTERED INDEX以及PRIMARY KEY,两者都将按照CLUSTERED INDEX中的方式进行存储,排序和结构化,因此在选择,插入,更新或删除的操作性能基础上,应该有没有什么不同

唯一的区别可能在于元数据本身。