目录

B+树和hash索引的区别

B+树和hash的区别

B+树的好处:

  • B+树是一个平衡的多叉树,从根节点到每个叶子结点的高度差值不超过1,叶子结点之间有指针相互链接

  • B+树上面的常规检索,从根节点到叶子结点的搜索效率基本相当,不会出现大幅波动

  • 基于索引扫描表的时候,也可以利用双向指针快速左右移动,效率很高。

B+树的坏处

  • 速度不如hash快,如果不需要氛围查询,没有排序,以等值查询为主的时候,就比较适合采用哈希索引。

Hash的好处

  • 不需要像B+树那样从根节点到叶子结点逐级查找,只需要一次hash运算,就可以快速的定位到相应的位置,速度很快
  • 比较适合等值查询(前提是键值一定是唯一的,如果不是唯一的,就需要先找到该键锁对应的值,然后再根据链表向后扫描,知道找到相应的数据)

Hash的缺点

  • 不太适用于范围检索,因为经过hash运算之后,键值是不连续的了,就没有办法再利用索引完成范围查询检索。
  • 哈希索引没有办法利用索引完成排序,还有 xxx%这样的模糊查询
  • 哈希索引不支持多列联合索引的最左匹配原则