B+树和hash索引的区别
目录
B+树和hash的区别
B+树的好处:
-
B+树是一个平衡的多叉树,从根节点到每个叶子结点的高度差值不超过1,叶子结点之间有指针相互链接
-
B+树上面的常规检索,从根节点到叶子结点的搜索效率基本相当,不会出现大幅波动
-
基于索引扫描表的时候,也可以利用双向指针快速左右移动,效率很高。
B+树的坏处
- 速度不如hash快,如果不需要氛围查询,没有排序,以等值查询为主的时候,就比较适合采用哈希索引。
Hash的好处
- 不需要像B+树那样从根节点到叶子结点逐级查找,只需要一次hash运算,就可以快速的定位到相应的位置,速度很快
- 比较适合等值查询(前提是键值一定是唯一的,如果不是唯一的,就需要先找到该键锁对应的值,然后再根据链表向后扫描,知道找到相应的数据)
Hash的缺点
- 不太适用于范围检索,因为经过hash运算之后,键值是不连续的了,就没有办法再利用索引完成范围查询检索。
- 哈希索引没有办法利用索引完成排序,还有
xxx%
这样的模糊查询 - 哈希索引不支持多列联合索引的最左匹配原则