聚集索引和非聚集索引

2021-08-26 21:35:47 字數 927 閱讀 7210

使用聚集索引

聚集索引確定表中資料的物理順序。聚集索引類似於**簿,後者按姓氏排列資料。由於聚集索引規定資料在表中的物理儲存順序,因此乙個表只能包含乙個聚集索引。但該索引可以包含多個列(組合索引),就像**簿按姓氏和名字進行組織一樣。

聚集索引對於那些經常要搜尋範圍值的列特別有效。使用聚集索引找到包含第乙個值的行後,便可以確保包含後續索引值的行在物理相鄰。例如,如果應用程式執行的乙個查詢經常檢索某一日期範圍內的記錄,則使用聚集索引可以迅速找到包含開始日期的行,然後檢索表中所有相鄰的行,直到到達結束日期。這樣有助於提高此類查詢的效能。同樣,如果對從表中檢索的資料進行排序時經常要用到某一列,則可以將該錶在該列上聚集(物理排序),避免每次查詢該列時都進行排序,從而節省成本。

當索引值唯一時,使用聚集索引查詢特定的行也很有效率。例如,使用唯一雇員 id 列 emp_id 查詢特定雇員的最快速的方法,是在 emp_id 列上建立聚集索引或 primary key 約束

使用非聚集索引

非聚集索引與課本中的索引類似。資料儲存在乙個地方,索引儲存在另乙個地方,索引帶有指標指向資料的儲存位置。索引中的專案按索引鍵值的順序儲存,而表中的資訊按另一種順序儲存(這可以由聚集索引規定)。如果在表中未建立聚集索引,則無法保證這些行具有任何特定的順序。

與使用書中索引的方式相似,microsoft® sql server™ 2000 在搜尋資料值時,先對非聚集索引進行搜尋,找到資料值在表中的位置,然後從該位置直接檢索資料。這使非聚集索引成為精確匹配查詢的最佳方法,因為索引包含描述查詢所搜尋的資料值在表中的精確位置的條目。如果基礎表使用聚集索引排序,則該位置為聚集鍵值;否則,該位置為包含行的檔案號、頁號和槽號的行 id (rid)。例如,對於在 emp_id 列上有非聚集索引的表,如要搜尋其雇員 id (emp_id),sql server 會在索引中查詢這樣乙個條目,該條目精確列出匹配的 emp_id 列在表中的頁和行,然後直接轉到該頁該行。

聚集索引和非聚集索引

聚集索引和非聚集索引 一 聚集索引和非聚集索引 聚集索引和非聚集索引的根本區別是表記錄的排列順序和與索引的排列順序是否一致,聚集索引表記錄的排列順序與索引的排列順序一致,優點是查詢速度快,因為一旦具有第乙個索引值的紀錄被找到,具有連續索引值的記錄也一定物理的緊跟其後。聚集索引的缺點是對錶進行修改速度...

聚集索引和非聚集索引

本文引自 一種索引,該索引中鍵值的邏輯順序決定了表中相應行的物理順序。聚集索引確定表中資料的物理順序。聚集索引類似於 簿,後者按姓氏排列資料。由於聚集索引規定資料在表中的物理儲存順序,因此乙個表只能包含乙個聚集索引。但該索引可以包含多個列 組合索引 就像 簿按姓氏和名字進行組織一樣。聚集索引對於那些...

聚集索引和非聚集索引

聚集索引和非聚集索引 1 聚集索引 聚集索引,表中的資料儲存位置,根據索引的排序進行實際儲存,因此效率是相當高的。因為聚集索引決定了表中資料行的儲存位置。乙個表不可能有兩個或以上的聚集索引,如果乙個表中已經有乙個聚集索引,那麼這個表中其他的索引都將是非聚集索引。表排列順序 表記錄的排列順序與索引的排...