1. 程式人生 > >基於哈希的索引和基於樹的索引有什麽區別?

基於哈希的索引和基於樹的索引有什麽區別?

一起 排序 利用 組合 範圍查詢 使用範圍 數據 鍵值 節點

B+樹是一個平衡的多叉樹。B+樹從根節點到葉子節點的搜索效率基本相當,不會出現大幅波動。

哈希索引采用一定的哈希算法,把鍵值換成新的哈希值,檢索時不需要類似B+樹那樣從根節點逐級查找,只需一次哈希算法即可立刻定位到相應的位置。

兩者的區別:

1.hash索引僅滿足“=”、“IN”和“<=>”查詢,不能使用範圍查詢

(等值查詢。哈希索引具有絕對優勢(前提是:沒有大量重復鍵值,如果大量重復鍵值時,哈希索引的效率很低,因為存在所謂的哈希碰撞問題。))

2.hash索引無法被用來進行數據的排序操作

3.對於組合索引,Hash 索引在計算 Hash 值的時候是組合索引鍵合並後再一起計算 Hash 值,而不是單獨計算 Hash 值,所以通過組合索引的前面一個或幾個索引鍵進行查詢的時候,Hash 索引也無法被利用

4.Hash 索引遇到大量Hash值相等的情況後性能並不一定就會比B-Tree索引高

基於哈希的索引和基於樹的索引有什麽區別?