一、HASH结构介绍
### --- 索引原理
——> MySQL中索引的常用数据结构有两种,一种是Hash,另一种是BTree。
### --- HASH结构
——> Hash底层实现是由Hash表来实现的,是根据键值 <key,value> 存储数据的结构。
——> 非常适合根据key查找value值,也就是单个key查询,或者说等值查询。
——> 对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码,
——> 哈希码是一个较小的值,并且不同键值的行计算出来的哈希码也不一样。
### --- Hash索引的缺点
——> 哈希索引只包含哈希值和行指针,而不存储字段值,
——> 所以不能使用索引中的值来避免读取行。
——> 哈希索引数据并不是按照索引值顺序存储的,所以也就无法用于排序。
——> 哈希索引只支持等值比较查询。不支持任何范围查询和部分索引列匹配查找。
### --- Hsah索引的优点
——> 只需要做等值比较查询,而不包含排序或范围查询的需求,都适合使用哈希索引
——> 访问哈希索引的数据非常快,除非有很多哈希冲突。