码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 为什么要用 B+ 树,而不用普通二叉树?


    为什么要用 B+ 树,而不用普通二叉树?

    可以从几个维度去看这个问题,查询是否够快,效率是否稳定,存储数据多少,以及查找磁盘次数。

    为什么不用普通二叉树?

    普通二叉树存在退化的情况,如果它退化成链表,相当于全表扫描。平衡二叉树相比于二叉查找树来说,查找效率更稳定,总体的查找速度也更快。

    为什么不用平衡二叉树呢?

    读取数据的时候,是从磁盘读到内存。如果树这种数据结构作为索引,那每查找一次数据就需要从磁盘中读取一个节点,也就是一个磁盘块,但是平衡二叉树可是每个节点只存储一个键值和数据的,如果是 B+ 树,可以存储更多的节点数据,树的高度也会降低,因此读取磁盘的次数就降下来啦,查询效率就快。

    为什么用 B+ 树而不用 B 树呢?

    B+相比较B树,有这些优势:

    • 它是 B Tree 的变种,B Tree 能解决的问题,它都能解决。

      B Tree 解决的两大问题:每个节点存储更多关键字;路数更多

    • 扫库、扫表能力更强

      如果我们要对表进行全表扫描,只需要遍历叶子节点就可以 了,不需要遍历整棵 B+Tree 拿到所有的数据。

    • B+Tree 的磁盘读写能力相对于 B Tree 来说更强,IO次数更少

      根节点和枝节点不保存数据区, 所以一个节点可以保存更多的关键字,一次磁盘加载的关键字更多,IO次数更少。

    • 排序能力更强

      因为叶子节点上有下一个数据区的指针,数据形成了链表。

    • 效率更加稳定

      B+Tree 永远是在叶子节点拿到数据,所以 IO 次数是稳定的。

    Hash 索引和 B+ 树索引区别是什么?

    • B+ 树可以进行范围查询,Hash 索引不能。
    • B+ 树支持联合索引的最左侧原则,Hash 索引不支持。
    • B+ 树支持 order by 排序,Hash 索引不支持。
    • Hash 索引在等值查询上比 B+ 树效率更高。
    • B+ 树使用 like 进行模糊查询的时候,like 后面(比如 % 开头)的话可以起到优化的作用,Hash 索引根本无法进行模糊查询。
  • 相关阅读:
    Linux之部署前后端分离项目
    C++ 实现2048小游戏
    高压功率放大器在微孔压电超声雾化研究中的应用
    (免费领源码)Java&springboo&Mysql儿童疫苗预约系统 12222-计算机毕业设计
    MySQL-索引优化和查询优化
    【LeetCode】761. 特殊的二进制序列
    buuctf [BJDCTF2020]Easy MD5
    计算机毕业设计Java咖啡销售平台(源码+mysql数据库+系统+lw文档)
    仿牛客网项目第七章:项目进阶,构建安全高效的企业服务
    《软件方法》应用-订单拣选和阿布思考法
  • 原文地址:https://blog.csdn.net/limingqiang007/article/details/126517611
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号