Mysql與索引有關的樹的概念

2022-08-01 23:54:17 字數 1487 閱讀 9189

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+樹的簡單概念:一種特殊的平衡查詢樹,所有記錄節點都是按鍵值大小順序存放於同一層的葉子節點,各葉子節點以指標進行銜接,鍵值小在左,鍵值大在右 。

葉子節點從左到右順序遍歷便可得到所有鍵值的順序排序,這也是為什麼聯合索引需滿足「最左字首匹配」的原因。

樹的有關概念

樹 n n 0 個結點構成的有限集合 空樹 n 0時,樹稱為空樹 樹的根 沒有父親節點但是有左右兒子的結點 邊的數目 一顆n個結點的樹有n 1條邊 結點的度 結點的子樹個數 樹的度 樹種所有結點中最大的度數 葉節點 度為0的結點 父節點 有子樹的結點是其子樹的跟結點的父結點 子結點 若a結點是b結點...

mysql有關索引 有關MySQL索引的一點補充

like xx select from tb1 where name like cn 未使用索引 select from tb1 where name like cn 使用索引 使用函式 未使用索引 select from tb1 where reverse name hwan 使用索引 selec...

mysql索引的概念 MySQL索引的定義

請注意,本文件基於mysql5.7 innodb引擎,也許會對以下的版本同樣生效,但不構成指導意見。關於mysql的索引,網上已經有太多的文章來解釋,這裡咱們不提那些老生常談的定義,嘗試從特殊一點的角度來直觀的理解索引。索引是幫助mysql高效獲取資料的排好序的資料結構,節點中的索引從左到右做遞增排...