hash索引结构使用方式较为局限,仅适用于=、IN和<=>三种,但是由于通过hash可以直接查找到具体的值,而不用像B+树那样每次都从root节点开始遍历,所以在通常情况下,hash的查找效率要比B+树高。
hash的缺陷:
1. hash不能进行范围查找
值在计算hash后,并不能保证计算后的hash值和计算前的大小排列一样,所以hash不适用于范围查找
2. hash不能进行排序查询
值计算后的hash值无法保证与原值大小顺序一样,所以无法进行排序
3. 组合索引不能使用部分字段查询
组合索引的hash值是所有索引字段的值组合在一起进行计算的,若仅使用部分字段进行查询的话,计算出的hash值基本不会与索引的hash值相同
4. hash在出现大量值碰撞的时候,性能会降低
hash出现大量的值相等的时候,需要进行表扫描以进行精确匹配,效率较低