1. 程式人生 > >資料庫B樹索引和hash索引的優缺點比較

資料庫B樹索引和hash索引的優缺點比較

  • 雜湊值衝突多時,不適用

      雜湊索引的是用欄位的值,計算出一個範圍內的hash值,通過hash值去對映得到資料的位置(行號還是實際資料的位置,還沒有區分)已經指向下一個資料的指標,不會儲存欄位的值,所以使用hash索引不能直接得到資料,只能得到一個位置資訊;hash函式計算hash值和對映的一些演算法,導致hash是無序的,不能用於排序,以及範圍查詢,只適用於等值查詢;組合索引時,是使用組合的欄位值共同計算出一個hash值,只能確定部分的欄位值,我們無法預測hash值的特徵,也就沒辦法在hash表上面進行搜尋,所以不支援部分索引列匹配查詢;hash函式的選擇對hash結構的效能有很大的影響,好的hash函式要讓資料的hash值有一個較均勻的分佈,舉一個極端的例子,如果100個數據,計算出了同一個hash值,那麼意味著儲存這些資料的時候,要一直使用解決衝突的演算法去儲存,然後對查詢沒有任何好處,不僅僅浪費了hash衝突的計算時間,對查詢還沒有任何優化,所以在雜湊衝突多時,反而不適用,但是不得不承認,在hash沒有太多的衝突時,等值查詢的速度確實是比較可觀的。
      emmmmmm,講的不是很清楚,類似一些寫給自己的總結。