B-tree索引和Hash索引区别
B+tree:
- B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度差值不超过1,而且同层级的节点间有指针相互链接。
- 在B+树上的常规检索,从根节点到叶子节点的搜索效率基本相当,不会出现大幅波动,而且基于索引的顺序扫描时,也可以利用双向指针快速左右移动,效率非常高。
因此,B+树索引被广泛应用于数据库、文件系统等场景
Hash 索引结构:
其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash
索引的查询效率要远高于 B-Tree
索引。
- Hash 索引仅仅能满足"=",“IN"和”<=>"查询,不能使用范围查询。
- Hash 索引无法被用来避免数据的排序操作。
- Hash 索引不能利用部分索引键查询。
- Hash 索引在任何时候都不能避免表扫描。
- Hash 索引遇到大量Hash值相等的情况后性能并不一定就会比B-Tree索引高。
简单地说,哈希索引就是采用一定的哈希算法,把键值换算成新的哈希值
,检索时不需要类似B+树那样从根节点到叶子节点逐级查找,只需一次哈希算法即可立刻定位到相应的位置
,速度非常快。
使用场景
- 如果是等值查询,那么哈希索引明显有绝对优势
范围查询、排序、分组
等查询特征,用B+树索引
标签:场景,Hash,从根,查询,索引,哈希,mysql,节点 From: https://www.cnblogs.com/cgy-home/p/16955082.html