Hash索引是将一列或者多列数据值, 进行 hash运算, 并将结果映射到数组的某个位置上.
当hash值冲突时, 会追加一个链表存储数据....用一个哈希函数把 key 换算成一个确定的位置,然后把 value 放在数组的这个位置;
多个 key 值经过哈希函数的换算,会出现同一个值的情况。...由于 Hash索引本身的特殊性, 也带来了很多限制和弊端.
1.Hash索引只适合等值比较查找, 如"=", IN, "", 不适合范围查找和匹配查找, 如like, ">", ""等...;
2.Hash索引适合区分度很高的列, 反之, 会造成hash值的大量冲突, 大量数据在一个无序链表中比较查询, 性能可想而知.
3.因为散列数组的长度是有限的, 所以Hash索引也只适合数据量不是很大的情况下使用....
4.Mysql 中的 Innodb引擎是不支持手动创建 Hash索引的, 只提供了内部优化使用的自适应哈希索引(Adaptive Hash Index).