适用于: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 值相关联。这样要定位某一条记录时就会很是麻烦,会浪费屡次表数据的访问,而形成总体性能低下。
总结:哈希适用在小范围的精确查找,在列数据很大,又不须要排序,不须要模糊查询,范围查询时有用