您好,登錄后才能下訂單哦!
下文主要給大家帶來mysql索引數據結構一般如何使用,希望這些內容能夠帶給大家實際用處,這也是我編輯mysql索引數據結構一般如何使用這篇文章的主要目的。好了,廢話不多說,大家直接看下文吧。
MyISAM使用B-Tree實現主鍵索引、唯一索引和非主鍵索引。
InnoDB中非主鍵索引使用的是B-Tree數據結構,而主鍵索引使用的是B+Tree。
B-Tree
B-tree(多路搜索樹,并不是二叉的)是一種常見的數據結構。使用B-tree結構可以顯著減少定位記錄時所經歷的中間過程,從而加快存取速度。按照翻譯,B 通常認為是Balance的簡稱。這個數據結構一般用于數據庫的索引,綜合效率較高。
性能(推薦學習:MySQL視頻教程)
B-tree有以下特性:
1、關鍵字集合分布在整棵樹中;
2、任何一個關鍵字出現且只出現在一個結點中;
3、搜索有可能在非葉子結點結束;
4、其搜索性能等價于在關鍵字全集內做一次二分查找;
5、自動層次控制;
B+Tree
不同的存儲引擎可能使用不同的數據結構存儲,InnoDB使用的是B+Tree;
那什么是B+Tree呢?
B+Tree是應文件系統所需而出的一種B-Tree的變型樹,一棵m階的B+樹和m階的B-樹的差異在于:
B+和B-(即B)是因為每個結點上的關鍵字不同。一個多一個,一個少一個。
對于B+樹,其結點結構與B-tree相同,不同的是各結點的關鍵字和可以擁有的子結點數。如m階B+樹中,每個結點至多可以擁有m個子結點。非根結點至少有[m/2]個子結點,而關鍵字個數比B-tree多一個,為[m/2]~m。
這兩種處理索引的數據結構的不同之處:
1。B樹中同一鍵值不會出現多次,并且它有可能出現在葉結點,也有可能出現在非葉結點中。而B+樹的鍵一定會出現在葉結點中,并且有可能在非葉結點中也有可能重復出現,以維持B+樹的平衡。
2。因為B樹鍵位置不定,且在整個樹結構中只出現一次,雖然可以節省存儲空間,但使得在插入、刪除操作復雜度明顯增加。B+樹相比來說是一種較好的折中。
3。B樹的查詢效率與鍵在樹中的位置有關,最大時間復雜度與B+樹相同(在葉結點的時候),最小時間復雜度為1(在根結點的時候)。而B+樹的時間復雜度對某建成的樹是固定的。
對于以上關于mysql索引數據結構一般如何使用,大家是不是覺得非常有幫助。如果需要了解更多內容,請繼續關注我們的行業資訊,相信你會喜歡上這些內容的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。