1)B樹數據結構
B樹中每一個節點包含了鍵值和鍵值對於的數據對象存放地址指針,因此成功搜索一個對象能夠不用到達樹的葉節點。指針
成功搜索包括節點內搜索和沿某一路徑的搜索,成功搜索時間取決於關鍵碼所在的層次以及節點內關鍵碼的數量。對象
在B樹中查找給定關鍵字的方法是:首先把根結點取來,在根結點所包含的關鍵字K1,…,kj查找給定的關鍵字(可用順序查找或二分查找法),若找到等於給定值的關鍵字,則查找成功;不然,必定能夠肯定要查的關鍵字在某個Ki或Ki+1之間,因而取Pi所指的下一層索引節點塊繼續查找,直到找到,或指針Pi爲空時查找失敗。 索引
2)B+樹效率
B+樹非葉節點中存放的關鍵碼並不指示數據對象的地址指針,非也節點只是索引部分。全部的葉節點在同一層上,包含了所有關鍵碼和相應數據對象的存放地址指針,且葉節點按關鍵碼從小到大順序連接。若是實際數據對象按加入的順序存儲而不是按關鍵碼次數存儲的話,葉節點的索引必須是稠密索引,若實際數據存儲按關鍵碼次序存放的話,葉節點索引時稀疏索引。搜索
B+樹有2個頭指針,一個是樹的根節點,一個是最小關鍵碼的葉節點。方法
因此 B+樹有兩種搜索方法:鏈表
一種是按葉節點本身拉起的鏈表順序搜索。數據
一種是從根節點開始搜索,和B樹相似,不過若是非葉節點的關鍵碼等於給定值,搜索並不中止,而是繼續沿右指針,一直查到葉節點上的關鍵碼。因此不管搜索是否成功,都將走完樹的全部層。查詢
B+ 樹中,數據對象的插入和刪除僅在葉節點上進行。
這兩種處理索引的數據結構的不一樣之處:a,B樹中同一鍵值不會出現屢次,而且它有可能出如今葉結點,也有可能出如今非葉結點中。而B+樹的鍵必定會出如今葉結點中,而且有可能在非葉結點中也有可能重複出現,以維持B+樹的平衡。b,由於B樹鍵位置不定,且在整個樹結構中只出現一次,雖然能夠節省存儲空間,但使得在插入、刪除操做複雜度明顯增長。B+樹相比來講是一種較好的折中。c,B樹的查詢效率與鍵在樹中的位置有關,最大時間複雜度與B+樹相同(在葉結點的時候),最小時間複雜度爲1(在根結點的時候)。而B+樹的時候複雜度對某建成的樹是固定的。