B树和B+树分别是什么?区别在哪里?MySQL使用的是哪一种树?

B树与B+树是两种重要的数据结构,常用于数据库索引。B树每个节点包含key和data,叶子节点指针为null,而B+树所有数据都在叶子节点,非叶子节点只含导航信息。MySQL使用B+树,因为其查询效率更稳定,磁盘I/O更少,适合范围查询。B+树叶子节点间通过链表链接,利于遍历。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

B树和B+树分别是什么?区别在哪里?MySQL使用的是哪一种树?

B树,每个节点都存储key和data,所有节点组成这棵树,并且叶子节点指针为nul,叶子结点不包含任何关键字信息。

B+树,所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大的顺序链接,所有的非终端结点可以看成是索引部分,结点中仅含有其子树根结点中最大(或最小)关键字。

为什么MySQL用B+树呢?

  • B+ 树查询效率更稳定(因为因为B+ 树每次只有访问到叶子节点才能找到对应的数据 而在 B 树中 非叶子节点也会存储数据)
  • B+ 树的查询效率更高 (因为通常B+ 树比 B 树更矮胖 阶数更大 深度更低 查询所需要的磁盘 I/O 也会更少 。 同样的磁盘页大小 B+ 树可以存储更多的节点关键字)
  • 对索引进行范围查询时 B+ 树效率也更高(因为所有关键字都出现在B+ 树的叶子节点中 并通过有序链表进行了链接 。 而在 B 树中则需要通过中序遍历才能完成范围查找 效率要低很多)

B 树可以看作是对2-3查找树的一种扩展,即他允许每个节点有M-1个子节点。

  • 根节点至少有两个子节点
  • 每个节点有M-1个key,并且以升序排列
  • 位于M-1和M key的子节点的值位于M-1 和M key对应的Value之间
  • 其它节点至少有M/2个子节点

下图是一个M=4 阶的B树:

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Data+Science+Insight

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值