Hash索引

2018-04-18  本文已影响0人  xx1994

hash索引基于哈希表实现,只有精确匹配索引所有列的查询才有效。Memory引擎默认使用的是此种索引。

存储引擎对所有的索隐列计算出一个哈希码,将哈希码存储在索引中,同时哈希表中保存每个数据行的指针。这样,对于此种索引查找速度是非常快的。出现哈希值碰撞的话,索引会以链表的形式存放多个记录指针到同一个哈希条目中。

举个🌰:

name age
Jane 28
Peter 20
David 30

假设使用假想的哈希函数f(),生成对应的设想值:
f('Jane') = 2323
f('Peter') = 2456
f('David') = 2400

则哈希索引的数据结构如下:

槽(slot) 值(value)
2323 指向第1行指针
2400 指向第3行指针
2456 指向第2行指针

对于select * from user where `name` = 'Jane'那么直接先算Jane的哈希值,然后根据Jane的hash值2323去找到对应的第一行数据,查询速度相对于B-Tree索引是要快,但是也有一些局限:

上一篇 下一篇

猜你喜欢

热点阅读