1. 程式人生 > >如何刪除主鍵的聚集索引

如何刪除主鍵的聚集索引

當我們對一個表建立一個主鍵時,預設會給該主鍵列新增一條聚集索引,這是資料庫內部自動建立的,唯一性約束也會預設建立一個非聚集索引。

create table MyTable
(
   id int identity(1,1) primary key,
   name nvarchar(10) unique
)
  exec sp_helpindex MyTable

 

上面我們建立了一個主鍵id 和唯一性約束的name列,查看錶可以看到這時產生了兩個索引

聚集索引是一個寶貴的資源,在一些表的中有時我們永遠不會用到主鍵來作為查詢條件,或者作為其他表的外來鍵,這時主鍵的聚集索引

就顯得大才小用了,我們希望將聚集索引建立在其他真正需要的欄位,不過當我們執行刪除操作時會報以下錯誤

訊息 3723,級別 16,狀態 4,第 1 行
不允許對索引 'MyTable.PK__MyTable__3213E83F145C0A3F' 顯式地使用 DROP INDEX。該索引正用於 PRIMARY KEY 約束的強制執行

不過我們可以先刪除主鍵約束,這樣聚集所以就自動刪除了

alter table MyTable drop constraint PK__MyTable__3213E83F145C0A3F

我們再看下聚集索引已經不存在了

當然唯一約束所引起的索引也可以同樣的方式操作,先刪除唯一約束