Mysql的BTREE和HASH索引

建议默认使用BTree索引,若是时间太长,能够尝试HAST索引,但限制以下:排序

不支持between and

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

没法排序

由于转成Hash值了,因此排不了序。效率

复合查询时必全字段

由于是全字段组合后进行的HASH运算,因此只能全字段组合后进行HASH匹配。数据

没法避免全表扫描

因为多个索引字段存在HASH值相同的可能,须要进行二次对比,这时须要全表扫描,因此最好不要多字段用HASH索引。查询

Hash碰撞时,效率不高

因此数据惟一性很差的字段,不能用。时间

因此,索引键值最好只用于等值状况,且惟一度高,不会排序和分组,好比身份证号数据。