非聚集索引

非聚集索引

非聚集索引,是一種索引的形式,該索引中索引的邏輯順序與磁碟上行的物理存儲順序不同。

基本信息

實際套用

非聚集索引非聚集索引
漢語字典的正文本身就是一個聚集索引
比如,我們要查“安”字,就會很自然地翻開字典的前幾頁,因為“安”的拼音是“an”,而按照拼音排序漢字的字典是以英文字母“a”開頭並以“z”結尾的,那么“安”字就自然地排在字典的前部。如果您翻完了所有以“a”開頭的部分仍然找不到這個字,那么就說明您的字典中沒有這個字;同樣的,如果查“張”字,那您也會將您的字典翻到最後部分,因為“張”的拼音是“zhang”。也就是說,字典的正文部分本身就是一個目錄,您不需要再去查其他目錄來找到您需要找的內容。正文內容本身就是一種按照一定規則排列的目錄稱為“聚集索引”。每個表只能有一個聚集索引,因為目錄只能按照一種方法進行排序

差別

數據行不按非聚集索引鍵的順序排序和存儲。非聚集索引的葉層不包含數據頁。相反,葉節點包含索引行。每個索引行包含非聚集鍵值以及一個或多個行定位器,這些行定位器指向有該鍵值的數據行(如果索引不唯一,則可能是多行)。非聚集索引可以在有聚集索引的表、堆集或索引視圖上定義。在Microsoft®SQLServer™2000中,非聚集索引中的行定位器有兩種形式:
如果表是堆集(沒有聚集索引),行定位器就是指向行的指針。該指針用檔案標識符(ID)、頁碼和頁上的行數生成。整個指針稱為行ID。如果表有聚集索引,或者索引在索引視圖上,則行定位器就是行的聚集索引鍵。如果聚集索引不是唯一的索引,SQLServer2000將添加在內部生成的值以使重複的鍵唯一。用戶看不到這個值,它用於使非聚集索引內的鍵唯一。SQLServer通過使用聚集索引鍵搜尋聚集索引來檢索數據行,而聚集索引鍵存儲在非聚集索引的葉行內。由於非聚集索引將聚集索引鍵作為其行指針存儲,因此使聚集索引鍵儘可能小很重要。如果表還有非聚集索引,請不要選擇大的列作為聚集索引的鍵。

相關詞條

相關搜尋

熱門詞條

聯絡我們