`primary key`关键字如何与SQL Server中的聚簇索引相关?

bba*_*our 5 sql-server performance primary-key physical-design clustered-index

PRIMARY KEY关键字如何与SQL Server中的聚簇索引相关联?

(有些人似乎想回答这个问题而不是我问的另一个问题,所以我给他们一个更好的地方去做.)

Qua*_*noi 9

PRIMARY KEY关键字如何与MS SqlServer中的聚簇索引相关?

默认情况下,a PRIMARY KEY实现为聚簇索引.但是,您也可以通过非聚簇索引来支持它(指定NONCLUSTERED其声明的选项)

聚簇索引不一定是PRIMARY KEY.它甚至可以是非唯一的(在这种情况下,uniqueifier每个键都会添加一个名为的隐藏列).

请注意,聚簇索引实际上并不是一个索引(即,对表进行不同排序的投影,以及对原始记录的引用).它表本身,订购了原始记录.

创建聚簇索引时,您并不真正"创建"可以从表中删除的任何内容.您只需重新排列表本身并更改记录的存储方式.


Ode*_*ded 5

表的聚簇索引通常在主键列上定义.

然而,这不是严格的要求.

来自MSDN:

创建PRIMARY KEY约束时,如果表上的聚簇索引尚不存在且您未指定唯一的非聚簇索引,则会自动创建一个或多个列上的唯一聚簇索引.

和:

如果指定了非聚簇主键约束,则可以在主键列以外的列上创建聚簇索引.