SQL Server 中聚簇索引和非聚簇索引的區別


索引是與實際表或檢視關聯的查詢表,資料庫使用它來提高資料檢索效能。在索引中,鍵儲存在一種結構(B 樹)中,使 SQL Server 能夠快速有效地找到與鍵值關聯的行。如果在表上定義了主鍵和唯一鍵約束,則會自動建立索引。索引有兩種型別,即聚簇索引非聚簇索引

閱讀本文以瞭解有關聚簇索引非聚簇索引的更多資訊,以及它們之間有何不同。

什麼是聚簇索引?

聚簇索引是一種索引型別,其中表的記錄會根據索引進行物理重新排序。如果表建立了主鍵約束,則資料庫引擎會自動建立一個聚簇索引。在這種情況下,資料會根據其鍵和值在表或檢視中進行排序或儲存。

聚簇索引包含主要資料。它速度很快,因此在聚簇索引中資料檢索更快,並且它還需要更少的記憶體空間來執行操作。聚簇索引具有將資料儲存在磁碟上的固有能力。

什麼是非聚簇索引?

非聚簇索引是一種特殊的索引型別,其中索引的邏輯順序與磁碟上行的物理儲存順序不匹配。在這種型別的索引中,表是用 UNIQUE 約束建立的,然後資料庫引擎會自動建立一個非聚簇索引。

非聚簇索引包含非聚簇索引鍵值,並且每個鍵值條目都有一個指向包含鍵值的資料行的指標。但是,非聚簇索引相對較慢,並且需要更多的記憶體空間來執行操作。此外,非聚簇索引不具有將資料儲存在磁碟上的固有屬性。

聚簇索引和非聚簇索引的區別

下表重點介紹了 SQL Server 中聚簇索引和非聚簇索引之間所有主要區別:

關鍵

聚簇索引

非聚簇索引

基本

聚簇索引是在主鍵上建立的。

非聚簇索引可以在任何鍵上建立。

排序

根據順序物理儲存資料。

它不會影響順序。

索引數量

一個表中只能有一個聚簇索引。

一個表可以有多個非聚簇索引。

空間

不需要額外的空間來儲存邏輯結構。

需要額外的空間來儲存邏輯結構。

效能

資料檢索速度比非聚簇索引快。

資料更新速度比聚簇索引快。

葉節點

葉節點包含聚簇索引中的實際資料。

葉節點不包含非聚簇索引中的實際資料。

索引數量

一個表只能有一個聚簇索引。

一個表可以有多個非聚簇索引。

資料

聚簇索引包含主要資料。

非聚簇索引包含資料的副本。

結論

您應該注意到的最顯著的區別是,聚簇索引只能在主鍵上建立,而非聚簇索引可以在任何鍵上建立。

更新於: 2023 年 2 月 20 日

8K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告