如何刪除主鍵的聚集索引


當我們對一個表建立一個主鍵時,默認會給該主鍵列添加一條聚集索引,這是數據庫內部自動建立的,唯一性約束也會默認創建一個非聚集索引。

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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM