簇集索引與聚集索引

2022-02-13 03:04:52 字數 1124 閱讀 3822

簇集索引=聚集索引:

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

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

非簇集索引:

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

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

非聚集索引的葉層不包含資料頁。

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

非聚集索引可以在有聚集索引的表、堆集或索引檢視上定義。在 microsoft® sql server™ 2000 中,非聚集索引中的行定位器有兩種形式:

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

如果表沒有聚集索引,或者索引在索引檢視上,則行定位器就是行的聚集索引鍵。如果聚集索引不是唯一的索引,sql server 2000 將新增在內部生成的值以使重複的鍵唯一。使用者看不到這個值,它用於使非聚集索引內的鍵唯一。sql server 通過使用聚集索引鍵搜尋聚集索引來檢索資料行,而聚集索引鍵儲存在非聚集索引的葉行內。

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

唯一索引:

唯一索引可以確保索引列不包含重複的值。在多列唯一索引的情況下,該索引可以確保索引列中每個值組合都是唯一的。

唯一索引既是索引也是約束。

復合索引:

索引項是多個的就叫組合索引,也叫復合索引。

復合索引使用時需要注意索引項的次序。 

聚集索引與非聚集索引

非聚集索引也是堆結構?其實sqlserver有幾種頁面型別 資料都使用一頁一頁來儲存,就像windows的記憶體也是使用頁面來組織的 感興趣的朋友可以了解下,希望本文可以增加你們對非聚集索引結構的理解。我們知道sqlserver的資料行的儲存有兩種資料結構 a 堆b b樹 binary 二叉樹 資料...

聚集索引與非聚集索引

一 聚集索引概念 漢語字典的正文本身就是乙個聚集索引。比如,我們要查 安 字,就會很自然地翻開字典的前幾頁,因為 安 的拼音是 an 而按照拼音排序漢字的字典是以英文本母 a 開頭並以 z 結尾的,那麼 安 字就自然地排在字典的前部。如果您翻完了所有以 a 開頭的部分仍然找不到這個字,那麼就說明您的...

聚集索引與非聚集索引

1 聚集索引 聚集索引的意思可以理解為順序排列,比如乙個主鍵自增的錶即為聚集索引,即id為1的存在於第一條,id為2的存在於第二條.假使資料庫中是使用陣列來存放的這張表中的資料,那麼如果我需要查詢第100條,那麼直接第一條資料的位址加上100即為第一百條的位址,一次就能查詢出來。因為資料庫中的資料只...