適用於:mysql
精確匹配算法
範圍匹配sql
最左匹配數據庫
不適合:性能
摘抄其餘人的的總結:指針
一、hash索引僅知足「=」、「IN」和「<=>」查詢,不能使用範圍查詢排序
由於hash索引比較的是常常hash運算以後的hash值,所以只能進行等值的過濾,不能基於範圍的查找,由於通過hash算法處理後的hash值的大小關係,並不能保證與處理前的hash大小關係對應。索引
二、hash索引沒法被用來進行數據的排序操做hash
因爲hash索引中存放的都是通過hash計算以後的值,而hash值的大小關係不必定與hash計算以前的值同樣,因此數據庫沒法利用hash索引中的值進行排序操做。io
三、對於組合索引,Hash 索引在計算 Hash 值的時候是組合索引鍵合併後再一塊兒計算 Hash 值,而不是單
獨計算 Hash 值,因此經過組合索引的前面一個或幾個索引鍵進行查詢的時候,Hash 索引也沒法被利用。
四、Hash 索引遇到大量Hash值相等的狀況後性能並不必定就會比B-Tree索引高。
對於選擇性比較低的索引鍵,若是建立 Hash 索引,那麼將會存在大量記錄指針信息存於同一個 Hash 值相關聯。這樣要定位某一條記錄時就會很是麻煩,會浪費屢次表數據的訪問,而形成總體性能低下。
總結:哈希適用在小範圍的精確查找,在列數據很大,又不須要排序,不須要模糊查詢,範圍查詢時有用