PRIMARY KEY 关键字与 SQL Server 中的聚集索引有何关系?
(有些人似乎想回答这个问题,而不是我问的另一个问题,所以我给他们一个更好的地方这样做。)
PRIMARY KEY 关键字与 SQL Server 中的聚集索引有何关系?
(有些人似乎想回答这个问题,而不是我问的另一个问题,所以我给他们一个更好的地方这样做。)
MS SqlServer中的
PRIMARY KEY
关键字与聚集索引有何关系?
默认情况下,aPRIMARY KEY
被实现为聚集索引。但是,您也可以通过非聚集索引来支持它(指定NONCLUSTERED
其声明的选项)
聚集索引不一定是PRIMARY KEY
. 它甚至可以是非唯一的(在这种情况下,一个名为的隐藏列uniqueifier
被添加到每个键中)。
请注意,聚集索引并不是真正的索引(即以不同方式排序的表的投影,以及对原始记录的引用)。它是表本身,按顺序排列了原始记录。
创建聚集索引时,您并没有真正“创建”任何可以从表中删除的内容。您只需重新排列表本身并更改记录的存储方式。
表的聚集索引通常在主键列上定义。
然而,这并不是一个严格的要求。
来自MSDN:
创建 PRIMARY KEY 约束时,如果表上的聚集索引尚不存在并且您未指定唯一的非聚集索引,则会自动在列上创建唯一聚集索引。
和:
如果指定了非聚集主键约束,则可以在主键列以外的列上创建聚集索引。
顾名思义,主键是表中行的主要唯一标识符。聚集索引根据索引对数据进行物理排序。虽然 SQL Server 默认会聚集一个主键,但两者之间并没有直接关系。