首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
B+ 树查询数据的全过程?
[问答题]
B+ 树查询数据的全过程?
添加笔记
求解答(0)
邀请回答
收藏(3)
分享
纠错
3个回答
添加回答
1
赫敏大王
在B+树中,由叶子节点存储实际的数据行记录,查询数据是层级递归与页内二分+链表遍历的结合 查找过程: 查询从B+树的根节点开始,通过比较目标键值与节点中存储的索引键值(通常采用二分查找),确定数据落在哪个区间,从而选择对应的分支继续向下查找。这一过程逐层递归,从上到下最终定位到目标叶子节点 叶子节点大小为16KB大小,存储的数据行不止一条,对叶子节点中数据行以组的形式划分,利用页目录结构,通过二分查找页目录中的槽,可以快速定位到包含目标数据行的组。 定位到目标组后,通过链表遍历(通常是单向或双向链表)逐条检查数据行,直到找到完全匹配的记录
发表于 2025-07-07 23:50:33
回复(0)
0
攻城牛
首先mysql的innodb引擎中基于b+树进行组织数据,当基于主键进行组织时为聚簇索引,当以非主键书香进行组织时为非聚簇索引。当b+树的键值为主键时,直接从root出发,通过比较节点的索引键值和目标键值大小确定数据的区间,然后进入下一层递归比较。最后直到进入叶子节点层,如果不存在则没有,存在节点的索引键值和目标键值大小相等,则直接锁定数据。如果b+树的键值为非主键时,对应的索引结构为非聚簇索引,同理,但是最后找到的是目标数据的主键值,最后通过“回表”,在主键的b+树中找到数据。
发表于 2025-07-08 22:19:40
回复(0)
0
虾粥
1)先从索引的根节点进行二分查询确定子节点,重复这个过程直到查找到叶子节点。2)在叶子节点中,利用页目录的槽进行二分查找确定信息的偏移。3)如果是聚簇索引,就可以直接根据偏移量取得存储的信息;如果是非聚簇索引,就先取得信息的主键,通过主键去回表查询主键索引,重复1和2的操作,最后在叶子节点中取得信息。
发表于 2025-06-20 15:39:08
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
难度:
3条回答
3收藏
21浏览
热门推荐
相关试题
3.下列关于表中西部省市区2006...
资料分析
言语理解与表达
资料分析
评论
(1)
4.该校1997年男女教师的比例为...
资料分析
言语理解与表达
资料分析
评论
(1)
计算机在工作过程中,若突然停电,(...
计算机常识
普及
C++
Pascal
选择题
评论
(1)
来自
NOIP2008初赛普及组
Mysql中表student_in...
数据库
SQL
评论
(1)
SQL中,下列涉及空值的操作不正确...
SQL
评论
(0)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题