B树和B+树的区别

B树 vs B+树

核心一句话:B+树只有叶子存数据、非叶子只存索引;B树所有节点都存数据。B+树更适合数据库、文件系统。

1. 节点存储内容(最核心区别)

  • B树 :
    每个节点(包括非叶子、叶子 )都存 关键字 + 数据/记录
  • B+树 :
    • 非叶子节点 :只存索引关键字,不存真实数据
    • 叶子节点 :存放全部数据记录,且叶子节点链表相连

2. 关键字与子节点关系

  • B树:n 个关键字 → n+1 个子节点
  • B+树:n 个关键字 → n 个子节点

3. 查找方式

  • B树:数据分散在各层,找到即停,可能在非叶子命中
  • B+树 :所有查找必须走到叶子节点 ;支持范围查询、全表遍历(顺着叶子链表走)

4. 磁盘IO(数据库重点)

  • B+树优势更大 :
    非叶子节点更小,一页能存更多索引 ,树更矮,磁盘IO次数更少。
    范围查询只遍历叶子链表,效率极高。

5. 应用场景

  • B树:文件系统索引(如NTFS)
  • B+树:MySQL InnoDB 索引、数据库主流索引结构

标准回答

  1. B树所有节点都存数据,B+树只有叶子存数据,非叶子只存索引。
  2. B+树非叶子节点更小,索引密度更高,树高更低,磁盘IO更少。
  3. B+树叶子节点连成链表,范围查询、排序、全表扫描远快于B树,所以MySQL用B+树。
相关推荐
by2099921 小时前
哈希表——快速找到数据:冲突、删除与扩容的实现
数据结构·c++·哈希算法·散列表
Code_Solitude21 小时前
c语言:关于qsoet函数知识点
c语言·数据结构·算法
Pniubi1 天前
快速排序(力扣基础)(递归)
java·数据结构·算法
inrichtt1 天前
第八课时:SPI总线揭秘:四线全双工通信的奥
c语言·数据结构·stm32·单片机·嵌入式硬件
HPtiger1 天前
数据结构——选择排序
数据结构·算法·排序算法
丑梨数据1 天前
信创环境里跑文档工具:格式兼容与本地合规的几个坑
数据结构·人工智能·算法·决策树·排序算法
烂蜻蜓1 天前
Pandas入门教程(四):Series数据结构——创建、索引与常用方法
数据结构·pandas
CS创新实验室2 天前
一棵树怎么做到“自平衡还不太费力“?——红黑树的旋转与染色
数据结构·算法·红黑树·408·计算机考研
Logic1012 天前
C语言/数据结构位运算题解:异或XOR找出被挑选一次的果子编号——只出现一次的数字
c语言·数据结构·算法·数组·位运算·时间复杂度·空间复杂度
从小白到软工2 天前
4-3 项目-学生成绩管理系统(上)
c语言·开发语言·数据结构·经验分享·ai编程