1. 程式人生 > >搜索引擎算法研究專題三:聚集索引與非聚集索引介紹

搜索引擎算法研究專題三:聚集索引與非聚集索引介紹

運算符 sof 節點 信息 ont ros 頁碼 存儲 定位

搜索引擎算法研究專題三:聚集索引與非聚集索引介紹

聚集索引介紹

  在聚集索引中,表中各行的物理順序與鍵值的邏輯(索引)順序相同。表只能包含一個聚集索引。

  如果不是聚集索引,表中各行的物理順序與鍵值的邏輯順序不匹配。聚集索引比非聚集索引有更快的數據訪問速度。

  聚集索引通常可加快 UPDATE 和 DELETE 操作的速度,因為這兩個操作需要讀取大量的數據。創建或修改聚集索引可能要花很長時間,因為執行這兩個操作時要在磁盤上對表的行進行重組。

  可考慮將聚集索引用於:

  1.包含數量有限的唯一值的列,如 state 列只包含 50 個唯一的州代碼。

  2.使用下列運算符返回一個範圍值的查詢:BETWEEN、>、>=、< 和 <=。

  3. 返回大結果集的查詢。

  創建聚集索引

  在數據庫關系圖中選擇要創建索引的表,右擊該表,然後從快捷菜單中選擇"索引/鍵"命令。

  -或-

  為要創建索引的表打開表設計器,在表設計器中右擊,然後從快捷菜單中選擇"索引/鍵"命令。

  創建新索引。有關詳細信息,請參見創建索引。

  若要修改現有索引,請從"選定的索引"列表中選擇該索引。

  選擇"創建為 CLUSTERED"復選框。

  當保存表或關系圖時,索引即創建在數據庫中。

  非聚集索引介紹

  非聚集索引與聚集索引一樣有 B 樹結構,但是有兩個重大差別:

  數據行不按非聚集索引鍵的順序排序和存儲。

  非聚集索引的葉層不包含數據頁。

  相反,葉節點包含索引行。每個索引行包含非聚集鍵值以及一個或多個行定位器,這些行定位器指向有該鍵值的數據行(如果索引不唯一,則可能是多行)。

  非聚集索引可以在有聚集索引的表、堆集或索引視圖上定義。在 Microsoft? SQL Server? 2000 中,非聚集索引中的行定位器有兩種形式:

  如果表是堆集(沒有聚集索引),行定位器就是指向行的指針。該指針用文件標識符 (ID)、頁碼和頁上的行數生成。整個指針稱為行 ID。

  如果表沒有聚集索引,或者索引在索引視圖上,則行定位器就是行的聚集索引鍵。如果聚集索引不是唯一的索引,SQL Server 2000 將添加在內部生成的值以使重復的鍵唯一。用戶看不到這個值,它用於使非聚集索引內的鍵唯一。SQL Server 通過使用聚集索引鍵搜索聚集索引來檢索數據行,而聚集索引鍵存儲在非聚集索引的葉行內。

  由於非聚集索引將聚集索引鍵作為其行指針存儲,因此使聚集索引鍵盡可能小很重要。如果表還有非聚集索引,請不要選擇大的列作為聚集索引的鍵。

搜索引擎算法研究專題三:聚集索引與非聚集索引介紹