如何刪除主鍵的聚集索引

2021-06-27 03:56:46 字數 880 閱讀 3848

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

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

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

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

訊息 3723,級別 16,狀態 4,第 1 行

不允許對索引 'mytable.pk__mytable__3213e83f145c0a3f' 顯式地使用 drop index。該索引正用於 primary key 約束的強制執行

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

alter

table mytable drop

constraint pk__mytable__3213e83f145c0a3f

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

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

如何刪除主鍵的聚集索引

當我們對乙個表建立乙個主鍵時,缺省會給該主鍵列新增一條聚集索引,這是資料庫內部自動建立的,唯一性約束也會預設建立乙個非聚集索引。上面我們建立了乙個主鍵id 和唯一性約束的name列,檢視表可以看到這時產生了兩個索引 聚集索引是乙個寶貴的資源,在一些表的中有時我們永遠不會用到主鍵來作為查詢條件,或者作...

主鍵與聚集索引

參考文章 主鍵與聚集索引 表通常具有包含唯一標識表中每一行的值的一列或一組列。這樣的一列或多列稱為表的主鍵 pk 用於強制表的實體完整性。在建立或修改表時,您可以通過定義 primary key 約束來建立主鍵。主鍵 primary key 來自msdn的描述 表通常具有包含唯一標識表中每一行的值的...

SQL中主鍵,聚集索引,非聚集索引的區別

主鍵 主鍵是表中通常有唯一標誌著表中的每一行的值的一列或者多列,它的值用於唯一地標識表中的某一條記錄,用於強制表的實體完整性。主鍵用來乙個表引用來自其他表的特定記錄,主鍵是一種唯一關鍵字,表定義的一部分。可以理解為乙個記錄行的標識。我們通過這個標識,就能精確把這行記錄找出來,它在表中是唯一的 聚集索...