吉法师的博客

不知道能否追到喜欢的人呀,今年努力下吧~ 2022.1.4

哈希表与哈希索引

哈希函数

所谓的哈希函数,就是根据这个函数和查找关键字key,可以直接确定查找值所在位置,而不需要一个个比较。

预先知道key所在的位置,直接找到数据,这样可以提升查找的效率。

hash函数就是根据key计算出应该存储地址的位置,而哈希表是基于哈希函数建立的一种查找表。

哈希函数构造举例

假设需要统计中国人口的年龄分布,以10为最小单元。今年是2018年,那么10岁以内的分布在2008-2018,20岁以内的分布在1998-2008……假设2018代表2018-2008直接的数据,那么关键字应该是2018,2008,1998……

那么可以构造哈希函数H(key)=(2018-key)/10=201-key/10

index key 年龄 人数(假设数据)
0 2018 0-10 200W
1 2008 10-20 250W
2 1998 20-30 253W
3 1988 30-40 300W

哈希索引

哈希索引(hash index)基于哈希表实现,只有精确匹配索引所有列的查询才有效。对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码(hash code),哈希码是一个较小的值,并且不同键值的行计算出来的哈希码也不一样。哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针。

对于hash相同的,采用链表的方式解决冲突。类似于hashmap。因为索引的结构是十分紧凑的,所以hash索引的查询很快。


Share