Mysql與索引有關的樹的概念
阿新 • • 發佈:2018-06-17
數據結構 二叉平衡樹 查找樹 最小 左右 因子 排序 子節點 指針
1.簡單地認識下與索引有關的數據結構: 樹的簡單概念:由n個節點組成具有層次關系的集合,根朝上葉朝下 樹的特點:每個節點有0或多個子節點,無父節點稱為根節點,每個非根節點有且只有一個父節點,每個節點可分為多個不相交的子樹(父節點除外)
二叉樹的簡單概念:每個節點最多有2個子樹的樹結構,有左右子樹之分
二叉查找樹的簡單概念:二叉樹的前提下,左子樹上所有節點的值均小於/等於其父節點的值,右子樹上所有幾點的值均大於/等於其父節點的值,左右子樹也分別為二叉查找樹
二叉查找樹的查找步驟:小於往左,大於往右,相等則查找成功,子樹為空不成功
但是,二叉查找樹遇到以下的情況效率會很低
存在某一節點高度過高
就有了平衡二叉樹的存在 二叉平衡樹的簡單概念:在二叉查找樹的前提下,任何節點的兩棵子樹的高度最大差為1(|BF|<=1) 平衡因子(BF):BF=左子樹深度—右子樹深度 要維持二叉平衡樹的平衡,最為重要的是找到其最小不平衡樹,最小不平衡樹可以這樣來找:找距離插入節點最近且平衡因子的絕對值大於1的結點為根的子樹,找到最小不平衡樹之後呢,需要將其變為平衡,主要是依靠旋轉來實現的 如何維持平衡(3種最小不平衡樹,3種旋轉方式): a.左旋:BF< -1時,父節點變為該節點的左節點 b.右旋:BF> 1時,父節點變為該節點的右節點 c.左旋+右旋 or 右旋+左旋:插入節點後,最小不平衡樹的BF與它的子樹的BF符號相反時,依具體情況先旋轉一次使符號相同後,再反向旋轉一次
但是,二叉樹每一個節點最多也就對應2個子節點,節點一多的話樹的高度就會很大,查找起來要遍歷的層數會很多,效率還是個問題,於是,B+樹便應運而生了 。
B+樹的簡單概念:一種特殊的平衡查找樹,所有記錄節點都是按鍵值大小順序存放於同一層的葉子節點,各葉子節點以指針進行銜接,鍵值小在左,鍵值大在右 。
葉子節點從左到右順序遍歷便可得到所有鍵值的順序排序,這也是為什麽聯合索引需滿足“最左前綴匹配”的原因。
Mysql與索引有關的樹的概念