0
点赞
收藏
分享

微信扫一扫

MySQL为什么用 B+ 树而不用 B 树呢?Hash 索引和 B+ 树索引区别是什么?

一、MySQL为什么用 B+ 树而不用 B 树呢?

B+相比较B树,有这些优势:

它是 B Tree 的变种,B Tree 能解决的问题,它都能解决。

B Tree 解决的两大问题:每个节点存储更多关键字;路数更多

扫库、扫表能力更强

如果我们要对表进行全表扫描,只需要遍历叶子节点就可以 了,不需要遍历整棵 B+Tree 拿到所有的数据。

B+Tree 的磁盘读写能力相对于 B Tree 来说更强,IO次数更少

根节点和枝节点不保存数据区, 所以一个节点可以保存更多的关键字,一次磁盘加载的关键字更多,IO次数更少。

排序能力更强

因为叶子节点上有下一个数据区的指针,数据形成了链表。效率更加稳定

B+Tree 永远是在叶子节点拿到数据,所以 IO 次数是稳定的。

二、Hash 索引和 B+ 树索引区别是什么?

B+ 树可以进行范围查询,Hash 索引不能。

B+ 树支持联合索引的最左侧原则,Hash 索引不支持。

B+ 树支持 order by 排序,Hash 索引不支持。

Hash 索引在等值查询上比 B+ 树效率更高。

B+ 树使用 like 进行模糊查询的时候,like 后面(比如 % 开头)的话可以起到优化的作用,Hash 索引根本无法进行模糊查询。

举报

相关推荐

0 条评论