主键始终在sql server中编入索引?

Ziy*_*ang 7 sql-server indexing primary-key clustered-index non-clustered-index

如果指定了非聚簇主键约束,则可以在主键列以外的列上创建聚簇索引. http://msdn.microsoft.com/en-us/library/ms186342.aspx

所以上面告诉我:我可以在除主键之外的列上创建聚簇索引.

我认为它还传达了主键应该是非聚簇主键或聚簇键.主键是否可能未编入索引?

更重要的是:

创建UNIQUE约束时,会创建唯一的非聚簇索引以默认强制执行UNIQUE约束.如果表上的聚簇索引尚不存在,则可以指定唯一的聚簇索引.

这是否意味着唯一约束必须创建聚簇索引或非聚簇索引?

Qua*_*noi 14

主键是否可能未编入索引?

不,这不对.

警察需要某种索引PRIMARY KEY,否则需要扫描每个插页上的整个表格(以确保唯一性).

来自文档:

数据库引擎自动创建唯一索引以强制执行PRIMARY KEY约束的唯一性要求.如果表上尚不存在聚簇索引或未显式指定非聚簇索引,则会创建唯一的聚簇索引以强制执行PRIMARY KEY约束.


这是否意味着唯一约束必须创建聚簇索引或非聚簇索引?

是的,出于同样的原因.


PRIMARY KEY并且UNIQUE是逻辑概念,而索引只是有效地实现它们的副作用.所以,严格来说,ALTER TABLE ADD CONSTRAINT UNIQUECREATE UNIQUE INDEX意味着不同的事情.

如果在未来,一些聪明的头脑发明了一种使用泡利原理或量子纠缠的方法或任何在物理层面上强制执行唯一性的方法,SQL Server 2155可以使用它来强制执行约束,但它仍然必须为索引创建B树.