索引的本質(zhì)是什么怎诫?
- 索引是幫助mysql高效獲取數(shù)據(jù)的排好序的數(shù)據(jù)結(jié)構(gòu)
- 索引的數(shù)據(jù)結(jié)構(gòu)有“二叉樹”,“紅黑樹”,“Hash表”呢诬,“B-Tree”
為什么索引使用的是B-Tree
- 如果使用二叉樹作為數(shù)據(jù)結(jié)構(gòu),而某一個數(shù)據(jù)列剛好是單邊增長阀圾,那么二叉樹將會逐漸變成一個鏈表狗唉。當(dāng)對這個數(shù)據(jù)列執(zhí)行查詢時,相當(dāng)于沒有使用索引,因為鏈表的優(yōu)勢在于插入和刪除哆料,而查詢是非常慢的吗铐。
- B-Tree葉節(jié)點具有相同的深度
- B-Tree葉節(jié)點的指針為空
- 節(jié)點中的數(shù)據(jù)索引從左到右遞增排列
B+Tree(B-Tree變種)
- 非葉子節(jié)點不存儲數(shù)據(jù),只存儲索引典阵,可以放更多的索引
- 順序訪問指針壮啊,提高區(qū)間訪問的性能
mysql的索引使用的是什么數(shù)據(jù)庫結(jié)構(gòu)撑蒜?
- 使用的B+樹
- B+樹的高扇出性,導(dǎo)致樹的層高一般在2~4層染突,也就是說查詢某一個鍵值只需要2~4次IO操作就可以辈灼。
- B+樹是高度平衡的巡莹,葉子節(jié)點中順序存放所有數(shù)據(jù)。
聚集索引
- 聚集索引是按照每張表的主鍵構(gòu)造一個B+樹降宅,同時葉子節(jié)點中存放的就是整張表的行記錄數(shù)據(jù)腰根。葉子節(jié)點也稱為數(shù)據(jù)頁。聚集索引能夠非橙衬眨快的針對范圍值查詢數(shù)據(jù)册养。