主键会被添加为聚集索引吗?

Lum*_*mpy 2 index sql-server-2008 database-design sql-server

我继承了一个数据库,其中没有在表上定义主键。也没有分配给表的聚集索引。

如果我执行一个更改表来分配主键,这会导致 SQL Server 也创建聚集索引吗?如果是这样,由于数据在硬盘上重新定位,我应该期望数据库速度变慢吗?

Aar*_*and 6

是的,默认情况下 SQL Server 会将主键创建为群集,但您不必接受默认值。

ALTER TABLE dbo.foo 
  ADD CONSTRAINT pk PRIMARY KEY (bar); -- clustered

ALTER TABLE dbo.foo 
  ADD CONSTRAINT pk PRIMARY KEY CLUSTERED (bar); -- clustered

ALTER TABLE dbo.foo 
  ADD CONSTRAINT pk PRIMARY KEY NONCLUSTERED (bar); -- non-clustered
Run Code Online (Sandbox Code Playgroud)

是的,您会在此处看到一些 I/O 活动,因此如果它是一个繁忙的系统,最好将其保存在安静的时间或维护期间。