MySQL的Hash索引相关

hash索引结构使用方式较为局限,仅适用于=、IN和<=>三种,但是由于通过hash可以直接查找到具体的值,而不用像B+树那样每次都从root节点开始遍历,所以在通常情况下,hash的查找效率要比B+树高。

hash的缺陷:

1. hash不能进行范围查找

值在计算hash后,并不能保证计算后的hash值和计算前的大小排列一样,所以hash不适用于范围查找

2. hash不能进行排序查询

值计算后的hash值无法保证与原值大小顺序一样,所以无法进行排序

3. 组合索引不能使用部分字段查询

组合索引的hash值是所有索引字段的值组合在一起进行计算的,若仅使用部分字段进行查询的话,计算出的hash值基本不会与索引的hash值相同

4. hash在出现大量值碰撞的时候,性能会降低

hash出现大量的值相等的时候,需要进行表扫描以进行精确匹配,效率较低