寫這篇文章幫助自己更好的理解索引,也算是自己的學(xué)習(xí)筆記吧,分享給大家 ,文中如果有分析的不正確的地方,歡迎指出 。
一. 聚集索引B樹分析
1.聚集索引按B樹結(jié)構(gòu)進(jìn)行組織的,索引B樹種的每一頁稱為一個(gè)索引節(jié)點(diǎn)。B樹的頂端節(jié)點(diǎn)稱為根節(jié)點(diǎn)。
索引中的低層節(jié)點(diǎn)稱為葉節(jié)點(diǎn)。根節(jié)點(diǎn)與葉節(jié)點(diǎn)之間的任何索引級(jí)別統(tǒng)稱為中間級(jí)。在聚集索引中,葉節(jié)點(diǎn)包含基礎(chǔ)表的數(shù)據(jù)頁。
根節(jié)點(diǎn)和中間級(jí)節(jié)點(diǎn)包含存有索引行的索引頁。每個(gè)索引行包含一個(gè)鍵值和一個(gè)指針,該指針指向 B 樹上的某一中間級(jí)頁或葉級(jí)索引中的某個(gè)數(shù)據(jù)行.每級(jí)索引中的頁均被連接在雙向鏈接列表中。
2.索引使用的每一個(gè)分區(qū)的index_id = 1 ,默認(rèn)情況下聚集索引單個(gè)分區(qū),當(dāng)使用分區(qū)表的時(shí)候,每個(gè)分區(qū)都有一個(gè)包含該特定分區(qū)相關(guān)數(shù)據(jù)的B樹結(jié)構(gòu),我是這么理解的不知道對(duì)不對(duì)?
3.SQL Server 寫入的數(shù)據(jù),數(shù)據(jù)鏈內(nèi)的頁和行將按聚集索引鍵值進(jìn)行排序。
4.SQL Server 將在索引中查找該范圍的起始鍵值,然后用向前或向后在數(shù)據(jù)頁中進(jìn)行掃描。為了查找數(shù)據(jù)頁鏈的首頁,SQL Server 將從索引的根節(jié)點(diǎn)沿最左邊的指針進(jìn)行掃描。
聚集索引B樹圖 :