摘自:《高性能Mysql》
1. 哈希索引基于哈希表实现,只有精确的匹配索引所有列的查询才有效,对于每一行数据,存储引擎会对所有的索引列计算一个哈希码,并将哈希码存储在索引中,同时在哈希表中保存只想每个数据行指针
mysql中,只有memory引擎显示支持哈希索引,并且支持非唯一哈希索引。也是memory默认的索引类型。
注意事项:
(1)哈希索引数据不是按照索引值顺序存储的所以无法用于排序
(2)也不支持部分索引匹配查找
(3)不支持范围查询,只支持等值比较查询包括(=、IN()、<=>)
(4)如果哈希冲突很多(不同的索引列值却有相同的哈希值),索引维护操作代价很高
2.InnoDB引擎可以“自适应哈希索引”。可以自定义创建哈希索引。但是其实还是在B+Tree进行查找,但是是使用的是哈希值而不是键本身进行索引查找。