社区
数据结构与算法
帖子详情
为什么B+树比B树更适合做文件索引?
x020794
2009-10-19 05:05:24
是不是因为B+树的叶子节点已经包含了所有Key,从而B+树的内部结点就就仅仅作为叶子节点的索引而存在,无需再像B树那样包含硬盘指针,使B+树的内部结点更小,于是单硬盘区块可存放的内部结点相对于B树更多,这样就减少了查找时的读盘次数?
请问这个是不是根本原因呢?
...全文
717
8
打赏
收藏
为什么B+树比B树更适合做文件索引?
是不是因为B+树的叶子节点已经包含了所有Key,从而B+树的内部结点就就仅仅作为叶子节点的索引而存在,无需再像B树那样包含硬盘指针,使B+树的内部结点更小,于是单硬盘区块可存放的内部结点相对于B树更多,这样就减少了查找时的读盘次数? 请问这个是不是根本原因呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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+树应该是由于进行过排序和索引,因此更容易找到。一个基本的规则就是:在没有排序的任何数据结构都比有排序的数据结构更容易找到
手把手教你实现自己的数据库
文件
索引
(附源码)
本课程主要实战讲解如何用B-tree去设计实现...但是并不知道如何去实现,印象不是很深刻), 在学完本课程之后可以
更
好的去理解数据库底层
索引
的实现,为什么用B、
B+树
就能减少IO加快查找等、有利于今后的面试、开发等.
B+树
比
B树
更
适合
做
文件
索引
的原因
B+树
比
B树
更
适合
做
文件
索引
的原因
为什么说
B+树
比
B树
更
适合
数据库
索引
?
1、
B+树
的磁盘读写代价
更
低:
B+树
的内部节点并没有指向关键字具体信息的指针,因此其内部节点相对
B树
更
小,如果把所有同一内部节点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多,一次性读入内存的...
B+树
比
B树
更
适合
做
文件
数据库
索引
1.
B树
中关键字集合分布在整棵树中,叶节点中不包含任何关键字信息,而
B+树
关键字集合分布在叶子结点中,非叶节点只是叶子结点中关键字的
索引
; 2.
B树
中任何一个关键字只出现在一个结点中,而
B+树
中的关键字必须...
解析
B+树
比
B树
更
加
适合
做
数据库
索引
的原因
前言 数据库常用的
索引
有Hash
索引
、BTree
索引
、全文
索引
。Hash
索引
虽然等值查询会很快(单条记录查询),但其无法进行有效的范围查询,而范围查询是数据库的常用...本文主要是讨论
B+树
与
B树
结构差不多,为什么会用B...
数据结构与算法
33,008
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章