首页 > 试题广场 >

B+ 树查询数据的全过程?

[问答题]
B+ 树查询数据的全过程?    
在B+树中,由叶子节点存储实际的数据行记录,查询数据是层级递归与页内二分+链表遍历的结合 查找过程: 查询从B+树的根节点开始,通过比较目标键值与节点中存储的索引键值(通常采用二分查找),确定数据落在哪个区间,从而选择对应的分支继续向下查找。这一过程逐层递归,从上到下最终定位到目标叶子节点 叶子节点大小为16KB大小,存储的数据行不止一条,对叶子节点中数据行以组的形式划分,利用页目录结构,通过二分查找页目录中的槽,可以快速定位到包含目标数据行的组。 定位到目标组后,通过链表遍历(通常是单向或双向链表)逐条检查数据行,直到找到完全匹配的记录
发表于 2025-07-07 23:50:33 回复(0)
首先mysql的innodb引擎中基于b+树进行组织数据,当基于主键进行组织时为聚簇索引,当以非主键书香进行组织时为非聚簇索引。当b+树的键值为主键时,直接从root出发,通过比较节点的索引键值和目标键值大小确定数据的区间,然后进入下一层递归比较。最后直到进入叶子节点层,如果不存在则没有,存在节点的索引键值和目标键值大小相等,则直接锁定数据。如果b+树的键值为非主键时,对应的索引结构为非聚簇索引,同理,但是最后找到的是目标数据的主键值,最后通过“回表”,在主键的b+树中找到数据。
发表于 2025-07-08 22:19:40 回复(0)
1)先从索引的根节点进行二分查询确定子节点,重复这个过程直到查找到叶子节点。2)在叶子节点中,利用页目录的槽进行二分查找确定信息的偏移。3)如果是聚簇索引,就可以直接根据偏移量取得存储的信息;如果是非聚簇索引,就先取得信息的主键,通过主键去回表查询主键索引,重复1和2的操作,最后在叶子节点中取得信息。
发表于 2025-06-20 15:39:08 回复(0)