数据结构 — 哈希表

目录

文章目录

哈希表

哈希表,又称为散列表,是根据键值对(Key/Value)进行访问的数据结构,它让 Value 经过哈希函数的转换映射到哈希表对应的位置上,查找效率非常高。哈希索引就是基于哈希表实现的,假设我们对 name 建立了哈希索引,则查找过程如下图所示:
在这里插入图片描述
对于每一行数据,存储引擎都会对所有的索引列(上图中的 name 列)计算一个哈希码(上图散列表的位置),散列表里的每个元素指向数据行的指针,由于索引自身只存储对应的哈希值,所以索引的结构十分紧凑,这让哈希索引查找速度非常快!但是哈希索引也有它的劣势,如下:

  • 针对哈希索引,只有精确匹配索引所有列的查询才有效,比如我在列(A, B)上建立了哈希索引,如果只查询数据列 A,则无法使用该索引。
  • 哈希索引并不是按照索引值顺序存存储的,所以也就无法用于排序,也就是说无法根据区间快速查找。例如:Python 字段类型对象是有没有顺序的。
  • 哈希索引只包含哈希值和行指针,不存储字段值,所以不能使用索引中的值来避免读取行,不过,由于哈希索引多数是在内存中完成的,大部分情况下这一点不是问题。
  • 哈希索引只支持等值比较查询,包括 =, IN(),不支持任何范围的查找,如 age > 17。
原创文章 592 获赞 1483 访问量 197万+

猜你喜欢

转载自blog.csdn.net/Jmilk/article/details/105917999