当前位置: 首页 > news >正文

为什么要用B+树

B+树的优势

支持范围查询:B+树在进行范围查询时,只需要从根节点一直遍历到叶子节点,因为数据都存储在叶子节点上,而且叶子节点之间有指针连接,可以很方便的进行范围查询

支持排序:B+树的叶子节点按照关键字顺序存储,可以快速支持排序操作,提供排序效率

存储更多的索引数据:因为它的非叶子节点只能存储索引关键字,不存储实际数据,因此可以存储更多的索引数据

在节点分裂和合并时,IO操作少:B+树的叶子节点的大小是固定的,而且节点的大小一般都会设置为一页的大小,这就使得节点分裂和合并时,IO操作很少,只需读取和写入一页

有利于磁盘预读:由于B+树的节点大小是固定的,因此可以很好的利用磁盘预读特性,一次行读取多个节点到内存中,可以减少IO操作次数,提高查询效率

有利于缓存:B+树的非叶子结点只存储执行子节点的指针,二步存储数据,这样可以使得缓存能搞容纳更多的索引数据,从而提供缓存的命中率,加快查询速度

 

为什么不使用B数和红黑树

B+树只有叶子节点存储数据,而非叶子节点不存储数据,可以存储更多的索引数据

节点大小固定,可以存储更多的索引数据

叶子节点之间是双向链表链接的,可以很方便的进行范围查询

叶子节点按照关键子顺序存储,更好的支持排序

所以,使用B+树实现索引有很多好处,比如我们前面提到的支持范围查询、有利于磁盘预读、有利于优化排序等等。而这些是红黑树和B树做不到的

http://www.lryc.cn/news/285482.html

相关文章:

  • Android 通过adb命令查看应用流量
  • 超全的测试类型详解,再也不怕面试答不出来了!
  • 【Linux】
  • 「 网络安全常用术语解读 」网络攻击者的战术、技术和常识知识库ATTCK详解
  • Java.lang.Integer类详解
  • GitFlow工作流
  • GitHub Copilot 与 OpenAI ChatGPT 的区别及应用领域比较
  • 【C++】类和对象(上篇)
  • 甜蜜而简洁——深入了解Pytest插件pytest-sugar
  • SpringBoot3整合OpenAPI3(Swagger3)
  • 2023美赛各题分析,2024美赛数学建模思路解析2.2日第一时间更新
  • 分享一个学习git的网站
  • 用户拉新的4大关键策略,照着做就对了!
  • 如何用“VMware安装Ubuntu”win11系统?
  • ZJOI2009 对称的正方形
  • 大模型学习与实践笔记(十一)
  • Elasticsearch+Kibana 学习记录
  • Cesium叠加超图二维服务、三维场景模型
  • 【低危】OpenSSL 拒绝服务漏洞
  • TDL-Tiny Synopsis-TED-ED 网络理论 Network Theory
  • GIS项目实战08:JetBrains IntelliJ IDEA 2022 激活
  • Linux 命令大全 CentOS常用运维命令
  • 6.3.5编辑视频
  • 同星多通道CAN FD转USB/WIFI设备,解决近距离无线通讯问题
  • wamp环境的组成
  • Idea 开发环境不断切换git代码分支导致冲掉别人代码
  • GO 中如何防止 goroutine 泄露
  • Linux练习题
  • storm统计服务开启zookeeper、kafka 、Storm(sasl认证)
  • YOLOv8加入AIFI模块,附带项目源码链接