SQL Server 中聚簇索引和非聚簇索引的區別
索引是與實際表或檢視關聯的查詢表,資料庫使用它來提高資料檢索效能。在索引中,鍵儲存在一種結構(B 樹)中,使 SQL Server 能夠快速有效地找到與鍵值關聯的行。如果在表上定義了主鍵和唯一鍵約束,則會自動建立索引。索引有兩種型別,即聚簇索引和非聚簇索引。
閱讀本文以瞭解有關聚簇索引和非聚簇索引的更多資訊,以及它們之間有何不同。
什麼是聚簇索引?
聚簇索引是一種索引型別,其中表的記錄會根據索引進行物理重新排序。如果表建立了主鍵約束,則資料庫引擎會自動建立一個聚簇索引。在這種情況下,資料會根據其鍵和值在表或檢視中進行排序或儲存。
聚簇索引包含主要資料。它速度很快,因此在聚簇索引中資料檢索更快,並且它還需要更少的記憶體空間來執行操作。聚簇索引具有將資料儲存在磁碟上的固有能力。
什麼是非聚簇索引?
非聚簇索引是一種特殊的索引型別,其中索引的邏輯順序與磁碟上行的物理儲存順序不匹配。在這種型別的索引中,表是用 UNIQUE 約束建立的,然後資料庫引擎會自動建立一個非聚簇索引。
非聚簇索引包含非聚簇索引鍵值,並且每個鍵值條目都有一個指向包含鍵值的資料行的指標。但是,非聚簇索引相對較慢,並且需要更多的記憶體空間來執行操作。此外,非聚簇索引不具有將資料儲存在磁碟上的固有屬性。
聚簇索引和非聚簇索引的區別
下表重點介紹了 SQL Server 中聚簇索引和非聚簇索引之間所有主要區別:
關鍵 |
聚簇索引 |
非聚簇索引 |
---|---|---|
基本 |
聚簇索引是在主鍵上建立的。 |
非聚簇索引可以在任何鍵上建立。 |
排序 |
根據順序物理儲存資料。 |
它不會影響順序。 |
索引數量 |
一個表中只能有一個聚簇索引。 |
一個表可以有多個非聚簇索引。 |
空間 |
不需要額外的空間來儲存邏輯結構。 |
需要額外的空間來儲存邏輯結構。 |
效能 |
資料檢索速度比非聚簇索引快。 |
資料更新速度比聚簇索引快。 |
葉節點 |
葉節點包含聚簇索引中的實際資料。 |
葉節點不包含非聚簇索引中的實際資料。 |
索引數量 |
一個表只能有一個聚簇索引。 |
一個表可以有多個非聚簇索引。 |
資料 |
聚簇索引包含主要資料。 |
非聚簇索引包含資料的副本。 |
結論
您應該注意到的最顯著的區別是,聚簇索引只能在主鍵上建立,而非聚簇索引可以在任何鍵上建立。