为什么B+树比B树更适合做文件索引?

x020794 2009-10-19 05:05:24
是不是因为B+树的叶子节点已经包含了所有Key,从而B+树的内部结点就就仅仅作为叶子节点的索引而存在,无需再像B树那样包含硬盘指针,使B+树的内部结点更小,于是单硬盘区块可存放的内部结点相对于B树更多,这样就减少了查找时的读盘次数?

请问这个是不是根本原因呢?
...全文
717 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mao1986mao 2011-09-28
  • 打赏
  • 举报
回复
学习了,正需要这个只是呢,谢谢各位大侠
x020794 2009-10-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 sbwwkmyd 的回复:]
因为硬盘读写的单位一般是按扇区计算的(不能像内存一样可以读写几个字节),B+树一般都是以扇区大小来限制子节点数量的(一个扇区表示一个节点).
[/Quote]

你的意思是说:B+树单扇区可容纳结点比B树多,从而在读盘次数不变的情况下,加大了树的阶数,减小了树的高度,因此查找效率比B树高?
showjim 2009-10-20
  • 打赏
  • 举报
回复
因为硬盘读写的单位一般是按扇区计算的(不能像内存一样可以读写几个字节),B+树一般都是以扇区大小来限制子节点数量的(一个扇区表示一个节点).
showjim 2009-10-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 x020794 的回复:]
引用 5 楼 sbwwkmyd 的回复:
因为硬盘读写的单位一般是按扇区计算的(不能像内存一样可以读写几个字节),B+树一般都是以扇区大小来限制子节点数量的(一个扇区表示一个节点).


你的意思是说:B+树单扇区可容纳结点比B树多,从而在读盘次数不变的情况下,加大了树的阶数,减小了树的高度,因此查找效率比B树高?
[/Quote]
反过来说就是减少硬盘读写取次,而且存储方便,硬盘读写相对内存来说可是个"高消费"的东西.
thrinity 2009-10-19
  • 打赏
  • 举报
回复
主要是B+树的关键字都在叶子节点,删除插入的时候的操作要比B树要简单,因为B树的节点上也有关键字,B树的唯一优点相比较B+树就是搜索的时候可能要快一点找到,因为关键字可能在节点
xrjkgd 2009-10-19
  • 打赏
  • 举报
回复
学习了
x020794 2009-10-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 arong1234 的回复:]
我的理解这不是主要原因,因为如果仅仅是因为这个,我们完全可以在B树中也把内容载入内存

B+树应该是由于进行过排序和索引,因此更容易找到。一个基本的规则就是:在没有排序的任何数据结构都比有排序的数据结构更容易找到
[/Quote]
但是,B树节点中的Key,不也是排序了点么?
arong1234 2009-10-19
  • 打赏
  • 举报
回复
我的理解这不是主要原因,因为如果仅仅是因为这个,我们完全可以在B树中也把内容载入内存

B+树应该是由于进行过排序和索引,因此更容易找到。一个基本的规则就是:在没有排序的任何数据结构都比有排序的数据结构更容易找到

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧