主鍵與聚集索引的區別

2022-08-03 04:06:13 字數 849 閱讀 7984

主鍵可為聚集索引也可為非聚集索引。

兩者的比較

下面是乙個簡單的比較表

主鍵

聚集索引

用途強制表的實體完整性

對資料行的排序,方便查詢用

乙個表多少個

乙個表最多乙個主鍵

乙個表最多乙個聚集索引

是否允許多個欄位來定義

乙個主鍵可以多個欄位來定義

乙個索引可以多個欄位來定義

是否允許 null 資料行出現

如果要建立的資料列中資料存在null,無法建立主鍵。

建立表時指定的 primary key 約束列隱式轉換為 not null。

沒有限制建立聚集索引的列一定必須 not null .

也就是可以列的資料是 null

參看最後一項比較

是否要求資料必須唯一

要求資料必須唯一

資料即可以唯一,也可以不唯一。看你定義這個索引的 unique 設定。

(這一點需要看後面的乙個比較,雖然你的資料列可能不唯一,但是系統會替你產生乙個你看不到的唯一列)

建立的邏輯

資料庫在建立主鍵同時,會自動建立乙個唯一索引。

如果這個表之前沒有聚集索引,同時建立主鍵時候沒有強制指定使用非聚集索引,則建立主鍵時候,同時建立乙個唯一的聚集索引

如果未使用 unique 屬性建立聚集索引,資料庫引擎 將向表自動新增乙個四位元組 uniqueifier 列。

必要時,資料庫引擎 將向行自動新增乙個 uniqueifier 值,使每個鍵唯一。此列和列值供內部使用,使用者不能檢視或訪問。

主鍵與聚集索引

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

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

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

聚集索引與非聚集索引的區別

資料庫原理 裡面的解釋 聚集索引的順序就是資料的物理儲存順序,而非聚集索引的順序和資料物理排列無關。因為資料在物理存放時只能有一種排列方式,所以一 個表只能有乙個聚集索引。在sql server中,索引是通過二叉樹的資料結構來描述的 我們可以如此理解這個兩種索引 聚集索引的葉節點就是資料節點,而非聚...