聚集索引與非聚集索引

2022-08-21 03:54:10 字數 1033 閱讀 3806

聚集(clustered)索引

資料行的的物理順序與列值(一般主鍵事務那一列)的邏輯順序相同,乙個表中只能有乙個聚集索引。

乙個表就像以前用的新華字典,聚集索引就像拼音目錄,而每個字存放的頁碼就是資料的實體地址,如果查詢乙個字,只需查詢該字對應在字典拼音目錄對應的頁碼,就可以查詢到這個字所在的位置,而拼音目錄對應的a-z的字順序,和新華字典實際儲存的字的順序

a-z也是一樣的。資料行的物理順序與列值的順序相同,如果查詢的

id比較靠後的資料,那麼這行資料的位址在磁碟中的實體地址也會比較靠後。而且由於實體地址排列方式與聚集索引的順序相同,所以就只能建立聚集索引。

聚集索引的好處是索引的葉節點就是對應的資料節點,可以直接獲取到對應的全部列的資料,而非聚集索引在索引沒有覆蓋到對應的列的時候需要進行二次查詢,因此在查詢方面,聚集索引的速度往往會更佔優勢。

非聚集索引

該索引中索引的邏輯順序與磁碟上的物理儲存順序不同,乙個表中可以有多個非聚集索引。

非聚集索引就像字典中的偏旁字典,它的結構順序與實際存放順序不一定一致。

非聚集索引的葉節點

仍然是索引節點,只是有乙個指標指向對應的資料塊,如果使用非聚集索引查詢,而查詢列中包含了其他該索引沒有覆蓋的列,那麼還要進行第二次查詢,查詢節點上對應的資料行的資料。

聚集索引對於那些經常要搜尋範圍值的列特別有效。使用聚集索引找到包含第乙個值的行後,便可以確保包含後續索引值的行在物理相鄰。例如,如果應用程式執行

的乙個查詢經常檢索某一日期範圍內的記錄,則使用聚集索引可以迅速找到包含開始日期的行,然後檢索表中所有相鄰的行,直到到達結束日期。這樣有助於提高此

類查詢的效能。同樣,如果對從表中檢索的資料進行排序時經常要用到某一列,則可以將該錶在該列上聚集(物理排序),避免每次查詢該列時都進行排序,從而節省成本。

聚集索引與非聚集索引

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

聚集索引與非聚集索引

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

聚集索引與非聚集索引

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