1. 程式人生 > >叢集索引和非叢集索引

叢集索引和非叢集索引

索引體系結構分為叢集或非叢集。叢集索引是這樣的索引:其在資料頁面中的行的順序對應於索引中的行的順序。此順序是任何表中只能存在一個叢集索引的原因,而該表中可存在大量非叢集索引。在某些資料庫系統中,叢集索引的葉節點對應於實際資料,而不是對應於指向在其他位置上找到的資料的指標。

叢集索引和非叢集索引都只包含索引結構中的鍵和記錄標識。這些記錄標識始終指向資料頁面中的行。在使用叢集索引的情況下,資料庫管理器會嘗試按照相應的鍵在索引頁面中的順序來將資料儲存在資料頁面中。因此,資料庫管理器會嘗試將具有相似鍵的行插入到相同頁面上。如果對錶進行了重組,那麼會按照索引鍵的順序將資料插入資料頁面中。資料庫管理器不會維護資料的任何順序(與非叢集索引的對應鍵的順序相比時)。

重組具有所選索引的表會重新叢集資料。建立了叢集的索引對於帶有範圍謂詞的列非常有用,因為它允許對錶中的資料作更有效的順序訪問。因此,由於相似的值在同一資料頁面上,系統會訪存更少頁面。

通常,表中只有一個索引可以具有較高的叢集度。

由於叢集索引使儲存在頁面中的資料的訪問路徑更線性化,因此它們可提高大多數查詢操作的效能。此外,由於具有相似索引鍵值的行都儲存在一起,因而在使用叢集索引時順序檢測預取效率更高。

不能將叢集索引指定為與 CREATE TABLE 語句配合使用的表定義的一部分。相反,只通過執行指定了 CLUSTER 選項的 CREATE INDEX 語句來建立叢集索引。如果要針對主鍵叢集表,那麼 ALTER TABLE 語句必須用來在表上新增與建立的叢集索引對應的主鍵。然後,會將此叢集索引用作表的主鍵索引。

 

使用叢集索引提高效能

通常,如果叢集索引是唯一的,那麼叢集維護起來就更有效率。