一、B+Tree首先是有序結構,爲了避免至於樹的高度過高,影響查找效率,在葉子節點上存儲的不是單個數據,提升了查找效率;算法
爲了更好的支持範圍查詢,B+樹在葉子節點冗餘了非葉子節點數據,爲了支持翻頁,葉子節點之間經過指針相連;數據結構
二、B+樹算法: 經過繼承了B樹的特徵,經過非葉子節點查詢葉子節點獲取對應的value,全部相鄰的葉子節點包含非葉子節點,使用鏈表進行結合,有必定順序排序,從而範圍查詢效率很是高。函數
缺點:由於有冗餘節點數據,會比較佔內存。spa
’.net
一、Hash是k,v形式,經過一個散列函數,可以根據key快速找到value指針
二、哈希索引就是採用必定的hash算法,把鍵值換成新的哈希值,檢索時不須要相似B+樹那樣從根節點到葉子節點逐級查找,只須要一次hash算法便可當即定位到相應的位置,速度很是快。blog
缺點: 由於底層數據結構是散列的,沒法進行比較大小,不能進行範圍查找排序
一、若是是等值查詢,那麼hash索引有明顯的優點,由於只須要通過一次算法便可找到相應的鍵值;固然了,這個鍵值是惟一的,若是不惟一,則須要先找到下標位置再鏈式查找。繼承
二、從示意圖能夠知道,hash索引沒法支持範圍查詢,由於原先是有序的鍵值,可是通過hash算法後,有可能變成不連續的,就沒有辦法利用索引完成範圍查詢檢索數據。索引
三、一樣,hash索引也沒辦法利用索引完成排序,以及like `xxx%`這樣的模糊查詢(範圍查詢)。
四、hash索引也不支持多列聯合索引的最左前綴匹配規則。
五、B+樹索引的關鍵字檢索效率比較平均,不像B樹那樣波動幅度大,在有大量重複鍵的狀況下,hash索引的效率也是極低的,由於存在hash碰撞問題。
本文參考: