一、首先mysql 的innodb 和myisam 存储引擎都是不支持hash 索引的,这里的不支持指的是不能人为干预hash 索引的建立,而是通过自适应的方式,InnoDB存储引擎会自动根据访问的频率和模式来自动地为某些热点页建立哈希索引。
二、hash 算法
hash 算法的时间复杂度为o1,也就是通过一次查询就能找到结果,不同于B tree 的是,btree 检索每次都是从跟节点自上而下查找,查找的次数取决于树的高度,一般树的高度为3或4,所以要经过3到4次计算才能找到结果。
三、hash 索引对比btree 索引 的优劣势
1.在理想的情况下,不同的键会被转换为不同的索引值,但是在有些情况下我们需要处理多个键被哈希到同一个索引值的情况。所以哈希查找的第二个步骤就是处理冲突
如下图红色箭头所示。
2.1.如果是等值查询,那么hash 索引对比btree 有绝对的优势,但是如果是范围查询hash 就没有用武之地了
3.在存在相同键值的时候,