HASH索引和B樹索引的區別


1、B+Tree索引

1、B+Tree首先是有序結構,為了不至於樹的高度太高,影響查找效率,在葉子節點上存儲的不是單個數據,提高了查找效率; 為了更好的支持范圍查詢,B+樹在葉子節點冗余了非葉子節點數據,為了支持翻頁,葉子節點之間通過指針相連; 2、B+樹算法: 通過繼承了B樹的特征,通過非葉子節點查詢葉子節點獲取對應的value,所有相鄰的葉子節點包含非葉子節點,使用鏈表進行結合,有一定順序排序,從而范圍查詢效率非常高。 缺點:因為有冗余節點數據,會比較占內存。

2、Hash索引

1、Hash是k,v形式,通過一個散列函數,能夠根據key快速找到value 2、哈希索引就是采用一定的hash算法,把鍵值換成新的哈希值,檢索時不需要類似B+樹那樣從根節點到葉子節點逐級查找,只需要一次hash算法即可立即定位到相應的位置,速度非常快。 缺點: 因為底層數據結構是散列的,無法進行比較大小,不能進行范圍查找

3、B+樹索引和hash索引的明顯區別:

1、如果是等值查詢,那么hash索引有明顯的優勢,因為只需要經過一次算法即可找到相應的鍵值;當然了,這個鍵值是唯一的,如果不唯一,則需要先找到下標位置再鏈式查找。 2、從示意圖可以知道,hash索引無法支持范圍查詢,因為原先是有序的鍵值,但是經過hash算法后,有可能變成不連續的,就沒有辦法利用索引完成范圍查詢檢索數據。 3、同樣,hash索引也沒辦法利用索引完成排序,以及like `xxx%`這樣的模糊查詢(范圍查詢)。 4、hash索引也不支持多列聯合索引的最左前綴匹配規則。 5、B+樹索引的關鍵字檢索效率比較平均,不像B樹那樣波動幅度大,在有大量重復鍵的情況下,hash索引的效率也是極低的,因為存在hash碰撞問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM