为什么主键上的聚集索引是强制性的?

7 sql-server-2008 sql-server

为什么主键约束默认在 PK 列上创建聚集索引?

我们可以创建一个有主键但没有聚集索引的表吗?我需要 PK 约束来维护列上的唯一值 + 非空,但我不想要聚集索引,因为该表中有太多插入。

我读过聚集索引对插入有性能影响。

ype*_*eᵀᴹ 7

为什么主键约束默认在 PK 列上创建聚集索引?

这就是 MS-SQL-Server 程序员决定的默认值。一个好的聚集索引是一个具有唯一值(作为主键)、很窄(因为大多数主键是或至少应该是)并且不断增加的索引。因此,在大多数情况下,主键是聚簇键的一个好的(或最好的)选择(每个表最多可以有一个聚簇键)。

我们可以创建一个有主键但没有聚集索引的表吗?

是的你可以。通过明确定义所有索引,尤其是主键为非聚集。如果您认为不需要表上的聚集键,则可以这样做,并将主键设为非聚集键。仍然会强制执行唯一约束和非空约束。