PRIMARY KEY關鍵字如何與SQL Server中的聚集索引相關聯?「主鍵」關鍵字如何與SQL Server中的聚集索引相關聯?
(有些人似乎要回答這個問題,而不是a different question I asked,所以我給他們一個更好的地方這樣做。)
PRIMARY KEY關鍵字如何與SQL Server中的聚集索引相關聯?「主鍵」關鍵字如何與SQL Server中的聚集索引相關聯?
(有些人似乎要回答這個問題,而不是a different question I asked,所以我給他們一個更好的地方這樣做。)
表的聚簇索引的主鍵列通常定義。
但是,這並不是一個嚴格的要求。
從MSDN:
當你創建一個主鍵約束,在列或列的唯一聚集索引被自動創建,如果表上的聚集索引不存在,你不指定獨特的非聚集索引。
和:
如果指定一個非聚集主鍵約束可以創建在與主鍵列之外的列的聚集索引。
主鍵是,顧名思義,在您的表中的行的主要唯一標識符。聚集索引根據索引物理排序數據。儘管默認情況下SQL Server會將主鍵集羣,但兩者之間沒有直接關係。
PRIMARY KEY
關鍵字如何與MS SqlServer中的聚簇索引相關?
默認情況下,PRIMARY KEY
作爲聚集索引實現。但是,您也可以通過非聚簇索引來支持它(指定NONCLUSTERED
選項以用於其聲明)
聚簇索引不一定是PRIMARY KEY
。它甚至可以是非唯一的(在這種情況下,每個鍵被添加一個名爲uniqueifier
的隱藏列)。
請注意,聚集索引實際上並不是一個索引(即按照不同的順序對原始記錄進行的排序)。它是表本身,與原始記錄訂購。
當您創建聚集索引時,您並不真正「創建」任何可以從表中分離出來的東西。您只需重新排列表格並更改記錄的存儲方式。
哇,uniquifier。今天學到了新東西。 – 2010-09-07 20:01:41
當您創建聚集索引時,您確實創建了根索引頁面和中間頁面。仍+1。 – 2010-09-07 20:09:51