vlambda博客
学习文章列表

MySQL的Hash索引的不足

等你点关注都等的长毛了





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


1

hash不能进行范围查找

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


2

MySQL的Hash索引的不足

hash不能进行排序查询

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


3

MySQL的Hash索引的不足

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

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


4

MySQL的Hash索引的不足

hash碰撞导致性能降低

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