聚集索引--百度百科

一種索引,該索引中鍵值的邏輯順序決定了表中相應行的物理順序。
  聚集索引確定表中數據的物理順序。聚集索引類似於電話簿,按姓氏排列數據。由於聚集索引規定數據在表中的物理存儲順序,因此一個表只能包含一個聚集索引。但該索引可以包含多個列(組合索引),就像電話簿按姓氏和名字進行組織一樣。
  聚集索引對於那些經常要搜索範圍值的列特別有效。使用聚集索引找到包含第一個值的行後,便可以確保包含後續索引值的行在物理相鄰。例如,如果應用程序執行的一個查詢經常檢索某一日期範圍內的記錄,則使用聚集索引可以迅速找到包含開始日期的行,然後檢索表中所有相鄰的行,直到到達結束日期。這樣有助於提高此類查詢的性能。同樣,如果對從表中檢索的數據進行排序時經常要用到某一列,則可以將該表在該列上聚集(物理排序),避免每次查詢該列時都進行排序,從而節省成本。

  當索引值唯一時,使用聚集索引查找特定的行也很有效率。例如,使用唯一僱員 ID 列 emp_id 查找特定僱員的最快速的方法,是在 emp_id 列上創建聚集索引或 PRIMARY KEY 約束。

適用情況

  1、含有大量非重複值的列。
  2、使用BETWEEN,>,>=,<或<=返回一個範圍值的列
  3、被連續訪問的列
  4、返回大型結果集的查詢
  5、經常被使用連接或GROUP BY子句的查詢訪問的列
  下面的表總結了何時使用聚集索引或非聚集索引:
動作描述 使用聚集索引 使用非聚集索引
列經常被分組排序
返回某範圍內的數據 不應
一個或極少不同值 不應 不應
小數目的不同值 不應
大數目的不同值 不應
頻繁更新的列 不應
外鍵列
主鍵列
頻繁修改索引列 不應

使用注意事項

  注意事項 定義聚集索引鍵時使用的列越少越好,這一點很重要。如果定義了一個大型的聚集索引鍵,則同一個表上定義的任何非聚集索引都將增大許多,因爲非聚集索引條目包含聚集鍵。當把 SQL 腳本保存到可用空間不足的磁盤上時,索引優化嚮導不返回錯誤。有關 Microsoft&reg; SQL Server™ 2000 中如何實現非聚集索引的更多信息,請參見非聚集索引
  在分析過程中,索引優化嚮導會消耗相當多的 CPU 及內存資源。最好在生產服務器的測試版上執行優化,而不要在生產服務器上執行。此外,最好在另一臺計算機上而非運行 SQL Server 的計算機上運行該向導。該向導不能用於在 SQL Server 6.5 版或更早版本的數據庫中選擇或創建索引及統計信息。
  在創建聚集索引之前,應先了解您的數據是如何被訪問的。可考慮將聚集索引用於:
  包含大量非重複值的列。使用下列運算符返回一個範圍值的查詢:BETWEEN、>、>=、< 和 <=。被連續訪問的列。返回大型結果集的查詢。經常被使用聯接或 GROUP BY 子句的查詢訪問的列;一般來說,這些是外鍵列。對 ORDER BY 或 GROUP BY 子句中指定的列進行索引,可以使 SQL Server 不必對數據進行排序,因爲這些行已經排序。這樣可以提高查詢性能。 OLTP 類型的應用程序,這些程序要求進行非常快速的單行查找(一般通過主鍵)。應在主鍵上創建聚集索引。 聚集索引不適用於:
  頻繁更改的列 這將導致整行移動,因爲 SQL Server 必須按物理順序保留行中的數據值。這一點要特別注意,因爲在大數據量事務處理系統中數據是易失的。寬鍵 來自聚集索引的鍵值由所有非聚集索引作爲查找鍵使用,因此存儲在每個非聚集索引的葉條目內。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章