首页 > 数据库技术 > 详细

MySQL之——hash索引和B+Tree索引

时间:2021-02-07 00:03:58      阅读:26      评论:0      收藏:0      [点我收藏+]

在MySQL中,主要使用到两种索引,分别是hash索引和B+Tree索引,在常用的两种搜索引擎MyISAM和InnoDB中默认的都是使用B+Tree索引,也就是BTree。

InnoDB中是无法显式的使用hash索引,即使你定义了hash索引,看到的也是B+Tree索引,系统会在需要用到hash索引的列中,自动的为你使用hash索引。

 

hash索引:

采用一定的哈希算法,将键值换算成新的哈希值,检索时只需要经过一次哈希算法就能定位到相应的位置,速度相当快。

1、如果是等值查询,使用hash索引优势非常明显,不过前提是键值唯一,重复的键值(哈希碰撞,会把相同的哈希值通过链表连接起来)需要先找到键所在的位置,然后通过链表往后扫描,直到找到相应的数据。例如,在性别、年龄的列上就不适合使用hash索引,因为有大量重复的值。

2、如果是范围查询,那么hash索引将毫无用处,因为经过hash算法之后,就可能变成不连续的了,就没法使用索引完成范围的检索了。

3、也不支持最左匹配规则,例如:LIKE ‘%xxx’。

 

B+Tree索引:

1、B+Tree非叶子节点是不存储数据的,也就是数据都存储在叶子节点上,并且是按顺序存储的,也就是说,如果进行范围扫描会比hash更好。

2、由于根节点是存储在内存中的,查询一个数据,最多只需要1-3次磁盘IO即可。

MySQL之——hash索引和B+Tree索引

原文:https://www.cnblogs.com/zlworking/p/14382502.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!