为什么MongoDB索引选择B-树而Mysql索引选择B+树

这篇文章主要介绍“为什么MongoDB索引选择B-树而MySQL索引选择B+树”,在日常操作中,相信很多人在为什么MongoDB索引选择B-树而Mysql索引选择B+树问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”为什么MongoDB索引选择B-树而Mysql索引选择B+树”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

成都创新互联公司是一家专注于做网站、成都网站建设与策划设计,田东网站建设哪家好?成都创新互联公司做网站,专注于网站建设10年,网设计领域的专业建站公司;建站业务涵盖:田东等地区。田东做网站价格咨询:028-86922220

一、B-树和B+树的区别

很明显,我们要向弄清楚原因就要知道B-树和B+树的区别。为了不长篇大论。我们直接给出他们的形式总结他们的特点。

1、B-树

B-树是一种自平衡的搜索树,形式很简单:

为什么MongoDB索引选择B-树而Mysql索引选择B+树

这就是一颗B-树。针对我们这个问题的最核心的特点如下:

(1)多路,非二叉树

(2)每个节点既保存索引,又保存数据

(3)搜索时相当于二分查找

在这里我们假定都已经了解了B树相关的结构。

2、B+树

B+树是B-树的变种

为什么MongoDB索引选择B-树而Mysql索引选择B+树

最核心的特点如下:

(1)多路非二叉

(2)只有叶子节点保存数据

(3)搜索时相当于二分查找

(4)增加了相邻接点的指向指针。

从上面我们可以看出最核心的区别主要有俩,一个是数据的保存位置,一个是相邻节点的指向。就是这俩造成了MongoDB和Mysql的差别。为什么呢?

3、B-树和B+树的区别

(1)B+树查询时间复杂度固定是logn,B-树查询复杂度最好是 O(1)。

(2)B+树相邻接点的指针可以大大增加区间访问性,可使用在范围查询等,而B-树每个节点 key 和 data 在一起,则无法区间查找。

(3)B+树更适合外部存储,也就是磁盘存储。由于内节点无 data 域,每个节点能索引的范围更大更精确

(4)注意这个区别相当重要,是基于(1)(2)(3)的,B-树每个节点即保存数据又保存索引,所以磁盘IO的次数很少,B+树只有叶子节点保存,磁盘IO多,但是区间访问比较好。

有了他们的区别之后,现在我们再来解释这个原因就好多了。

 

二、原因解释

想要解释原因,我们还必须要了解一下MongoDB和Mysql的基本概念。

1、MongoDB

MongoDB 是文档型的数据库,是一种 NOSQL,它使用类 Json 格式保存数据。比如之前我们的表可能有用户表、订单表、购物篮表等等,还要建立他们之间的外键关联关系。但是类Json就不一样了。

为什么MongoDB索引选择B-树而Mysql索引选择B+树

我们可以看到这种形式更简单,通俗易懂。那为什么 MongoDB 使用B-树呢?

MongoDB使用B-树,所有节点都有Data域,只要找到指定索引就可以进行访问,无疑单次查询平均快于Mysql

2、Mysql

Mysql作为一个关系型数据库,数据的关联性是非常强的,区间访问是常见的一种情况,B+树由于数据全部存储在叶子节点,并且通过指针串在一起,这样就很容易的进行区间遍历甚至全部遍历。

这俩区别的核心如果你能看懂B-树和B+树的区别就很容易理解。

到此,关于“为什么MongoDB索引选择B-树而Mysql索引选择B+树”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


网页名称:为什么MongoDB索引选择B-树而Mysql索引选择B+树
文章路径:http://ybzwz.com/article/gjdsdi.html