爲什麼mysql索引要用B+Tree(BTree)數據結構

 

二叉樹

         不適合自增長索引,失去索引效率,樹單邊增長,成鏈表狀。

         

            (從1插入到4)

紅黑樹(平衡二叉樹)

          不適合數據量大,樹太高。如果查找數據在葉子節點,則需要查樹高次數。

        

           (從1插入到5)

hash表

         hash衝突,並且不支持範圍查詢,大於小於區間查詢。

        mysql支持,等於查詢能快速定位,只適合數據量特別大,範圍查詢很少,性能要求很高場景。

B+Tree

       data放在葉子節點, 非葉子節點不存data,只存索引,可以放更多的索引,順時針訪問指針,提高了區間訪問性能。

        支持範圍查詢,左節點比父節點小,右節點比父節點大,並且葉子節點有雙向地址指針定位。

         

B-Tree

    沒有B+Tree葉子節點的指針,不方便範圍查詢。

 

注:1.樹結構默認左節點小於父節點,右節點大於父節點。

     2.mysql庫中表沒有建主鍵索引會默認自己找一個唯一字段建索引,如果沒有會新建一個字段維護一個索引結構在後臺。

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章