Sql-Server
為什麼在少數列上啟用聚集索引屬性而不在其他列上啟用?
聽說只能有一個聚集索引?我可能是錯的,但我確定我在某個地方讀到過。
在我的 SQL Server 2005 表之一中,我有以下列:
SerialNum ——– BigInt ——– 主鍵
區——– nvarchar(50)
SchemeType —— nvarchar(50)
當我使用 SQL Server Management Studio 在設計模式下打開表時,我注意到為District啟用了Clustered Index屬性,而為SchemeType禁用了它。
如果只能有一個聚集索引,那麼當SerialNum已經定義為主鍵時,為什麼 District 會啟用此屬性?
如果可以有更多聚集索引,那麼如何為SchemeType列啟用此屬性?
主鍵和聚集索引是兩個不同的東西,儘管它們經常結合使用。您的桌子以這種方式結束的幾個潛在原因:
(a) 它可以使用非聚集主鍵創建
PRIMARY KEY NONCLUSTERED
,然後添加聚集索引。(b) 可能已經添加了聚集索引,然後添加了主鍵(在這種情況下,它不能被聚集,因為已經有聚集索引)。
其中任何一個都可能是故意的設計決策、事故、事後的變化等。
忽略 Management Studio 設計視圖中的屬性。聚集索引是表,但它由指定的列定義。其他列在技術上仍然是聚集索引的一部分,它們只是不是索引中的鍵列。稱“啟用/禁用”具有誤導性。