mysql两种索引结构应用场景

B-tree索引和Hash索引区别

B+tree:

  • B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度差值不超过1,而且同层级的节点间有指针相互链接。
  • 在B+树上的常规检索,从根节点到叶子节点的搜索效率基本相当,不会出现大幅波动,而且基于索引的顺序扫描时,也可以利用双向指针快速左右移动,效率非常高。

因此,B+树索引被广泛应用于数据库、文件系统等场景

Hash 索引结构:

  其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引。

  1. Hash 索引仅仅能满足"=",“IN"和”<=>"查询,不能使用范围查询。
  2. Hash 索引无法被用来避免数据的排序操作。
  3. Hash 索引不能利用部分索引键查询。
  4. Hash 索引在任何时候都不能避免表扫描。
  5. Hash 索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高。

简单地说,哈希索引就是采用一定的哈希算法,把键值换算成新的哈希值检索时不需要类似B+树那样从根节点到叶子节点逐级查找,只需一次哈希算法即可立刻定位到相应的位置,速度非常快。

 

使用场景

  1. 如果是等值查询,那么哈希索引明显有绝对优势
  2. 范围查询、排序、分组等查询特征,用B+树索引

 

posted @ 2022-12-06 14:14  白玉神驹  阅读(102)  评论(0)    收藏  举报