Sql-Server
是否將主鍵添加為聚集索引?
我繼承了一個沒有在表上定義主鍵的數據庫。也沒有為表分配聚集索引。
如果我執行更改表來分配主鍵,這是否會導致 SQL Server 也創建聚集索引?如果是這樣,我是否應該期望由於重新定位在硬碟上的數據的 IO 而導致數據庫執行緩慢?
是的,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
是的,你會在這裡看到一些 I/O 活動,所以如果它是一個繁忙的系統,最好將其保存到安靜的時間或維護期間。