B树和B+树的查找方式及原因

查找--多路查找树(B树) 待完成 阅读详情
AI摘要

本文探讨了B树和B+树的查找方式。B树仅支持随机查找,其节点内部包含多个关键字。B+树则不仅支持随机查找,由于所有关键字都存在于叶子节点,且叶子节点之间有链接,因此也支持顺序查找。这种特性使得B+树在数据库索引等领域更为适用。

 

目录

先把结论放上

大致定义

B树支持随机查找

B+树支持随机查找和顺序查找


先把结论放上

B树仅支持随机查找

B+树支持随机查找和顺序查找


大致定义

至于B树和B+树的定义我就不展开了,随便找了两张图大家能有个大致的印象就行了

 学习的时候对于这两个支持的查找有点疑惑,但是也没找到专门解释的,于是准备写一下自己的理解


B树支持随机查找

起初我想的是这明明是一个树形结构,随机查找又是通过下标来查找的,为啥能支持随机查找呢?后来大概有些明白了

单看树的每一个节点,一个节点里有多个关键字,所以我认为应该是在单个节点内部支持随机查找,而在节点之间就没有了

B+树支持随机查找和顺序查找

它支持随机查找的原因应与B树相同,但其还支持顺序查找,这个解释就比较简单了

对于B+树,其所有的关键字都会出现在叶节点,即其非叶节点上的关键字仅起索引作用,所以即使在非叶节点上出现了,在叶结点上还会再出现一次

所以对于B+树而言可以只查找叶子节点,故其在叶子节点那一层(根据B+树的性质可知其所有的叶子节点都在同一层)的最小元素上加了一个指针(即第二张图里的10)

这样就可以通过这个指针逐个访问叶子节点了,也就是顺序查找

为什么MySQL使用B+树做索引? 本篇文从二叉查找树,详细说明了为什么mysql用B+树作为数据的索引,以及在innodb中数据库如何通过B+树索引来存储数据以及查找数据。我们一定要记住这句话:数据即索引,索引即数据。 阅读详情

相关推荐

彩虹期权定价

彩虹期权的定价较为复杂,因为它涉及多个标的资产的联合分布。蒙特卡洛模拟(Monte Carlo Simulation):通过模拟多个标的资产价格路径,计算期权的预期支付。解析近似方法:如马尔可夫链近似方法或多变量Black-Scholes公式的扩展。数值方法:如有限差分法或傅里叶变换法,适用于某些特定条件下的多资产期权定价。由于彩虹期权涉及多个标的资产,我们通常使用蒙特卡洛模拟来进行定价。接下来,我将演示如何使用Heston模型和蒙特卡洛模拟方法来定价彩虹期权。

智能科技前沿 1856

B和B+树

B树只适用于:随机检索,不适用于顺序检索; 而B+树把所有关键码都存在叶结点上,这就为顺序检索也提供了方便。 ①B树和B+树用于组织文件的动态索引结构。  ②B树和B+树都是平衡的多分支树。  ③B树只适用于随机检索,不适用于顺序检索, 而B+树适用于顺序检索和随机检索 B树和B+树都能有效的支持随机检索

taotaoahui 5932

有限时间 vs 固定时间 vs 预定时间滑模:稳定性分析与仿真验证方法对比(中)

有限时间滑模控制(FTSMC)和固定时间滑模控制(FixTSMC)是两种重要的控制策略,旨在实现系统状态的快速收敛。FTSMC通过设计滑模面和控制律,确保系统状态在有限时间内收敛到原点,但其收敛时间与初始状态相关。FixTSMC则进一步优化,使收敛时间与初始状态无关,适用于高动态环境,具有更强的鲁棒性和更平滑的控制信号。两种方法均通过李雅普诺夫函数证明其稳定性,并通过仿真验证其有效性。FixTSMC在工程应用中更为可靠,尤其适合安全关键系统。

Lyajpunov的博客 3223

B+树的定义以及查找

一棵要追求“绝对平衡”,即所有子树高度要相同。例如:一颗4阶B+树。

jungleirim的博客 1037

微信支付开发之平台给用户转账到零钱的功能

请求消息中应包含商家批次单号、转账名称、appid、转账总金额、转账总笔数、转账openid、收款用户姓名等信息。批次已受理成功,若发起批量转账的30分钟后,转账批次单仍处于该状态,可能原因是商户账户余额不足等。【转账场景ID】 该批次转账使用的转账场景,如不填写则使用商家的默认场景,如无默认场景可为空,可前往“商家转账到零钱-前往功能”中申请。【转账总笔数】 一个转账批次单最多发起一千笔转账。【商家批次单号】 商户系统内部的商家批次单号,要求此参数只能由数字、大小写字母组成,在商户系统内部唯一。

程序员weixin_sodomany的博客 3449

NSFC结题报告下载脚本失效?3步教你手动修复下载按钮问题(2024最新版)

针对NSFC官网域名变更导致结题报告下载脚本失效的问题,本文提供了详细的手动修复指南。通过三步操作,教你如何修改用户脚本的域名匹配规则,恢复下载按钮功能,确保NSFC结题报告下载器能继续高效工作。

vscode6remote的博客 748

B树与B+树的顺序查找与随机查找

B树顺序检索和随机检索

Mark58的博客 1881

72、海洋地理信息系统:电子海图的全面解析

本文全面解析了海洋地理信息系统中的电子海图技术,从AIS数据的应用、电子海图数据的存储与显示,到电子导航的发展趋势和S-100通用水文数据模型的推广,系统地阐述了电子海图在现代航海中的核心作用及其未来发展方向。

hhh00的博客 251

B-树与B+树

B树和B+树是数据库索引的核心数据结构。B树通过多路平衡特性减少磁盘IO次数,但存在非叶子节点存储数据导致树高较高、范围查询效率低等问题。B+树针对这些缺陷进行了优化:非叶子节点仅存储索引键,增加分支数降低树高;所有数据存储在叶子节点并通过双向链表连接,大幅提升范围查询效率;查询路径长度一致保证性能稳定。B+树的这些特性使其成为数据库系统的首选索引结构,尤其适合处理海量数据的高效查询和范围操作。

qq_40589140的博客 1091

FH8626V100之开发环境搭建

FH8626V100是富瀚微出的一款带摄像头的方案,开发工具在Linux 上进行。版本 Ubuntu 20.04 64位。

xue_nuo的博客 1万+

详细解释SigLIP的原理,为什么有些多模态模型喜欢用他?怎么应用于机器人控制呢

详细解释SigLIP的原理,为什么有些多模态模型喜欢用他?怎么应用于机器人控制呢。

具身机器人和通用AI 1225

磁盘存储下红黑树、B 树与 B + 树的原理、操作及对比

本文围绕计算机系统中磁盘与内存的存储特性展开,深入阐述了数据读写的原理。在此基础上,着重探讨了 B 树和 B + 树的产生原因,详细介绍了 B 树的定义、插入、删除及范围查找的原理,同时给出了部分 B 树的代码实现示例。通过与 B 树对比,说明了 B + 树在数据存储结构、查询方式、插入删除操作等方面的特点。最后,以表格形式对红黑树、B 树和 B + 树从定义、结构特点、查找效率、插入删除效率、空间利用率、适用场景等多个维度进行了综合比较,清晰地展现了三者的差异,旨在揭示数据库、文件系统中高效数据存储与检

m0_73359068的博客 1141

【YOLO26实战全攻略】09——YOLO26多目标跟踪实战宝典:从原理到智慧园区人流统计全流程

多目标跟踪(MOT)是视频分析的核心技术,解决了单帧检测无法关联目标身份的痛点。本文基于YOLO26轻量化检测模型与ByteTrack跟踪算法,从新手视角出发,系统讲解多目标跟踪的核心原理、环境搭建、实操步骤与工程落地。内容涵盖ByteTrack分层关联策略解析、YOLO26集成跟踪的一行代码实现、配置参数调优、区域计数、轨迹数据提取与热力图可视化,最终通过智慧园区人车流量统计虚拟案例,完整呈现从技术原理到实际应用的全流程。本文注重实用价值,所有代码可直接复现,参数配置附带场景化建议,帮助新手快速上手。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 354

01数据结构-B树练习及B+树特点

在B树中的一个节点中的数据包含数据,key和指针域,通常我们认为这会使得节点内存放的数据量会变少,我们知道一个B树中的一个节点就是一次磁盘IO,假设一个节点能存512个字节数,我们数据一般都会占大头,假设一个数据中的数据,key和指针域占有256个字节,这样一个节点仅可以存放2个数据量,这样树的高度显得没有那么“矮胖”,这有点违背B树设计的初衷。这个重复出现的元素充当的是“路标”或“分隔符”的关键角色。2.依次将关键字5,6,9,13,8,2,12,15插入初始为空的4阶B树后,根节点中包含的关键字是()

2302_82136376的博客 1019

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

java b 树 文件存储_Java数据结构和算法(七)B+ 树

Java数据结构和算法(七)B+ 树我们都知道二叉查找树的查找的时间复杂度是 O(logN),其查找效率已经足够高了,那为什么还有 B 树和 B+ 树的出现呢?难道它两的时间复杂度比二叉查找树还小吗?答案当然不是, B 树和 B+ 树的出现是因为另外一个问题,那就是磁盘 IO。一、计算机中数据的存储原理页是计算机管理存储的逻辑块,硬件及操作系统往往将主存和磁盘存储区分割为连续的大小相等的块。每个块...

weixin_39755136的博客 328

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

oracle树子类遍历父类_MySQL索引为何选择B+树

声明本文所述的各种数据结构(二叉树等),均不考虑重复值的情况,本文简述各种数据结构的区别仅仅只是为了理解MySQL索引的需要而做的铺垫。什么是索引提起索引,大家都知道,建立索引可以让数据库查询更快,那么索引究竟是什么?我想这就不是每个人都能说得出来了。索引,是数据库管理系统中一个排序的数据结构,并用以协助快速查询、 更新数据库表中数据。是的,索引是一种数据结构,但是那么多的数据结构中为何...

weixin_42232139的博客 149

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

b+树和b树的区别_B+树和B/B树的区别?Mysql为啥用B+树来做索引?

一、为什么需要索引?大家都知道,我们读取数据时要避免全表扫描,那如何避免全表扫描呢?目前科学家给出的目标就是索引。索引就好比一本字典的目录一样,有了目录读者就不需要翻找全书来找内容。同样有了索引,数据库就不用全表扫描了。在一张数据表中不管你建不建索引都会有一个默认索引。如果有主键,则mysql会自动按照主键建索引。如果没有主键,mysql也会创建一个默认索引。所以:在创建表的时候,一定要...

weixin_42360237的博客 971

MySQL索引-B+树

索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。 索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在 [1,2,3,4] 中找到 4 这个数据,直接对全数据检索也很快,没有必要费力气建索引再去查找。 索引在 MySQL 数据库中分三类: B+ 树索引 Hash 索引 全文索引 我们今天要介绍的是工作开发中最常接触到的 InnoDB 存储引擎中的 B+ 树索引。要介绍 B+ 树索引,就不得不提二叉查找树,平衡二叉树和 B 树这三种数据结

u011148175的专栏 282

mysql 数字区间_mysql为什么选择B+树

声明本文所述的各种数据结构(二叉树等),均不考虑重复值的情况,本文简述各种数据结构的区别仅仅只是为了理解MySQL索引的需要而做的铺垫。什么是索引提起索引,大家都知道,建立索引可以让数据库查询更快,那么索引究竟是什么?我想这就不是每个人都能说得出来了。索引,是数据库管理系统中一个排序的数据结构,并用以协助快速查询、 更新数据库表中数据。是的,索引是一种数据结构,但是那么多的数据结构中为何...

weixin_39630048的博客 99

MYSQL索引数据结构----B+树

我们在考虑数据结构的时候,应该首先要知道数据存放在哪里?而MYSQL的数据是持久化的,所以其数据(数据记录+索引)应该是保存在磁盘里面的。因此当我们要查询某条数据记录时,就会先从磁盘中读取索引到内存中,然后再通过内存索引数据找到该条记录在磁盘的某个位置上,最后将其读到内存中。所以查询过程中会发生多次磁盘I/O,而I/O越多耗时越长。所以,我们索引数据结构应该要尽可能少的磁盘的 I/O 操作就能完成查询工作。另外,MySQL 是支持范围查找的,所以索引的数据结构不仅要能高效地查询某一个记录,而且也要能高效地执

sanylove的博客 1914

myisam读取速度为什么比innodb快_不准犹豫!再有人问你为什么MySQL用B+树做索引,就把这篇文章发给她...

作者 l 安静的boy来源 l Hollis(ID:hollischuang)前阵子写了一篇 B 树的文章,然后文末说要写 B+ 树,不过有点懒,一直没空去写,今天这篇 B+ 树的写的还不错,分享给大家看。当然,也可以看看我之前 B 树的文章勒:高频面试题:什么是B树?为啥文件索引要用B树而不用二叉查找树?索引这个词,相信大多数人已经相当熟悉了,很多人都知道MySQL的索引主要以B+树为...

weixin_39628551的博客 286

elementui获取所有树节点_面试官:MySQL索引为何选择B+树?

声明本文所述的各种数据结构(二叉树等),均不考虑重复值的情况,本文简述各种数据结构的区别仅仅只是为了理解MySQL索引的需要而做的铺垫。什么是索引提起索引,大家都知道,建立索引可以让数据库查询更快,那么索引究竟是什么?我想这就不是每个人都能说得出来了。索引,是数据库管理系统中一个排序的数据结构,并用以协助快速查询、 更新数据库表中数据。是的,索引是一种数据结构,但是那么多的数据结构中为何MySQL...

weixin_35969301的博客 102

MySQL之进阶:一篇文章搞懂MySQL索引之B+树

这种设计的好处是,非叶子节点只存储键值,因此固定大小的数据库页(如 InnoDB 中的页默认大小为 16KB)能够容纳更多的键值。这样,B+ 树的阶数(每个节点子节点的最大数量)会更高,使得树的形态“更矮更胖”。当数据量不断增长时,树的高度会随之增加,这会导致磁盘的 I/O 次数显著增多,从而降低数据查询的效率。在查找过程中,为了访问索引数据,会加载整个节点的数据块,这会增加磁盘 I/O 操作次数。图中的圆形代表二叉查找树的节点,其中最顶端的节点称为“根节点”,而没有子节点的节点称为“叶节点”。

m0_73735578的博客 1255

数据库为什么要使用B+树

今天看了几篇文章,自己总结一下。 数据库使用B+树肯定是为了提升查找效率。 但是具体如何提升查找效率呢? 查找数据,最简单的方式是顺序查找。但是对于几十万上百万,甚至上亿的数据库查询就很慢了。 所以要对查找的方式进行优化,熟悉的二分查找,二叉树可以把速度提升到O(log(n,2)),查询的瓶颈在于树的深度,最坏的情况要查找到二叉树的最深层,由于,每查找深一层,就要访问更深一层的索引文件。在...

weixin_30918633的博客 326

面试官:MySQL 中 InnoDB 的索引结构以及使用 B+ 树实现索引的原因

在 MySQL 的众多存储引擎中,InnoDB 是最常用的存储引擎,也是 MySQL 现阶段唯一免费支持事务机制的存储引擎。在本文中,我们以 InnoDB 为例,介绍 MySQL 的索引结构以及其使用 B+ 树实现索引的原因。表空间首先,我们来了解一下 MySQL 的表空间。在 MySQL 中,所有的数据都被存储在一个空间内,称之为表空间,表空间内部又可以分为段(segment)、区(extent...

独行侠梦的博客 345
上一篇: to_csv()输出csv文件乱码问题
下一篇: 直接插入排序的时间复杂度
密言
博客等级 码龄6年 242粉丝 58原创
评论 17
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值