Mysql的BTREE和HASH索引

建议默认使用BTree索引,如果时间太长,可以尝试HAST索引,但限制如下:

不支持between and

只支持 = IN <> 不支持范围查询如between and和like。

无法排序

因为转成Hash值了,所以排不了序。

复合查询时必全字段

因为是全字段组合后进行的HASH运算,所以只能全字段组合后进行HASH匹配。

无法避免全表扫描

由于多个索引字段存在HASH值相同的可能,需要进行二次对比,这时需要全表扫描,所以最好不要多字段用HASH索引。

Hash碰撞时,效率不高

所以数据唯一性不好的字段,不能用。

所以,索引键值最好只用于等值情况,且唯一度高,不会排序和分组,比如身份证号数据。

原文地址:https://www.cnblogs.com/liehen2046/p/11057130.html