如果列 NOT NULL UNIQUE CLUSTERED INDEX 将成为主键,则性能可能会发生变化
Possible performance change if column NOT NULL UNIQUE CLUSTERED INDEX will be Primary Key
如果将列声明为 NOT NULL UNIQUE CLUSTERED INDEX
,是否会使它 PRIMARY KEY
对性能或其他方面有任何实际改变?
应该没有任何影响。在几个 handwaves1 内,PRIMARY KEY
与 UNIQUE KEY
相同,附加条件是所有列都必须为非 NULL。因此,将此列装饰为 PRIMARY KEY 不应导致实现 table.
的物理数据结构 2 发生任何变化
CLUSTERED
是一个完全独立的概念——有时与 PRIMARY KEY
混为一谈。如果 table 没有 CLUSTERED INDEX
并且添加了 PRIMARY KEY
,那么默认情况下,它也将被定义为 CLUSTERED INDEX
。但如果需要,可以覆盖此行为,并且两者在实践中并没有捆绑在一起。
1此时我实际上想不出任何相关差异,但希望这只是为了避免吹毛求疵。
2聚簇索引和任何非聚簇索引和统计信息。
PRIMARY KEY
不允许为 null 并且必须是唯一的,约束 NOT NULL UNIQUE
也可以像 PRIMARY KEY
一样将类似的规则应用到列中,但是,您的 table 只能有一个主键,但可以有多个 NOT NULL UNIQUE
列。
以及 NOT NULL UNIQUE CLUSTERED INDEX
和 PRIMARY KEY
,两者都将像 CLUSTERED INDEX 中一样存储、排序和结构化,因此在操作性能基础上 select、插入、更新、 or delete,应该没有区别
唯一的区别可能在于元数据本身。
如果将列声明为 NOT NULL UNIQUE CLUSTERED INDEX
,是否会使它 PRIMARY KEY
对性能或其他方面有任何实际改变?
应该没有任何影响。在几个 handwaves1 内,PRIMARY KEY
与 UNIQUE KEY
相同,附加条件是所有列都必须为非 NULL。因此,将此列装饰为 PRIMARY KEY 不应导致实现 table.
CLUSTERED
是一个完全独立的概念——有时与 PRIMARY KEY
混为一谈。如果 table 没有 CLUSTERED INDEX
并且添加了 PRIMARY KEY
,那么默认情况下,它也将被定义为 CLUSTERED INDEX
。但如果需要,可以覆盖此行为,并且两者在实践中并没有捆绑在一起。
1此时我实际上想不出任何相关差异,但希望这只是为了避免吹毛求疵。
2聚簇索引和任何非聚簇索引和统计信息。
PRIMARY KEY
不允许为 null 并且必须是唯一的,约束 NOT NULL UNIQUE
也可以像 PRIMARY KEY
一样将类似的规则应用到列中,但是,您的 table 只能有一个主键,但可以有多个 NOT NULL UNIQUE
列。
以及 NOT NULL UNIQUE CLUSTERED INDEX
和 PRIMARY KEY
,两者都将像 CLUSTERED INDEX 中一样存储、排序和结构化,因此在操作性能基础上 select、插入、更新、 or delete,应该没有区别
唯一的区别可能在于元数据本身。