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

MySQL索引底层为什么是B+树?

Mysql准确点来说是innoDB这,所以大量使用这个b加树做索引,不是因为它看起来高级,而是因为官特别适合数据库这种基于磁盘页管理,而且经常要做范围查询的场景,先看为什么不是红黑树,红黑树本质上是二叉树,一个节点最多两个子节点,数据量一大,树的高度就会比较高,数据库查数据,它最怕的不是CPU多算几次,而是磁盘IO的一个次数太多,树越高意味着从根节点一路往下查的时候呢,可能要访问更多的磁盘页,性能自然就更差了.
而b+树呢,它是多叉平衡树,一个节点可以放很多key,还能挂很多子节点,这样同样规模的一个数据,b加树的层级会比红黑树低得多,通常3-4层就能支持非常大的一个数据量,层级低磁盘IO的一个次数就少,这才是关键啊,再看为什么不是Hash,Hash最大的一个问题不是查的慢,相反,等值查询它很快,但它不适合数据库里大量存在的一个范围查询和排序场景,比如你查where lD=10,Hash可能很好用,但你如果查wherelD>10 and id<100,或者要按某个字段去排序,Hash基本上就帮不上忙了,而b加树的一个key,它是天然有序的,所以它既能做等值查询,也很适合做范围查询,排序最左前缀匹配,这些都是数据库非常常见的一个需求,还有一个很重要的点,b加树特别适合磁盘页,数据库从磁盘读取数据的时候,不是一次读一条记录,而是按页读取,而是按页读取,比如innodb默认页的大小就是16KB,b加树的非叶子节点只存key和指针,不存整行的数据,所以一个页里可以放更多索引项,这样树就更矮更胖,同时真正的一个数据,通常集中在叶子节点,叶子节点之间还通过双向链表连接起来,做范围扫描的时候,只要先定位到起点,再顺着叶子节点往后扫就行,不需要反复回到上层节点,这也是它非常适合数据库的一个原因。

如果你想把这题答得更像做过项目,Innodb的一个主键索引是聚簇(cù)索引,数据就存放在叶子节点上,二级索引的叶子节点存的是主键值,所以通过二级索引查完整数据时,可能还要回表。
总结:
b加树它是多叉平衡树,层级低能减少磁盘的IO,它的key有序,适合范围查询和排序,非叶子节点只存索引信息,能提高单页装载的能力,叶子节点链表又让区间扫描更高效,正是因为这些特点,它才比红黑树和哈希更适合数据库的一个索引场景。

http://www.zskr.cn/news/1506812.html

相关文章:

  • 做海外移动市场分析,除了Sensor Tower,还有哪些实用广告情报工具? - 短商
  • 2026年进口红酒品牌推荐:谁才是真正值得入手的实力之选? - 资讯纵览
  • 2026年上海专注团队管理落地培训推荐上海智华教育小谢哥? - 资讯纵览
  • Duix.Avatar终极指南:三步实现本地AI数字人视频生成
  • 手把手教你为自建Docker仓库(如Harbor)配置insecure-registries,彻底告别登录失败
  • 留学生留学生求职网站:多元视角客观整理 - 虚拟星辰
  • 【离散数学实战指南】从试卷到应用:核心概念精讲与解题思路拆解
  • MSC7119 DSP硬件设计实战:从时钟、电源到DDR的完整避坑指南
  • Vue 3.0 + Ant Design Vue 实战:手把手教你封装一个带悬浮详情的时间轴组件
  • 2026南平企业业主高频选择的 5 家危房检测房屋结构安全鉴定机构实地测评整理 - 科信检测
  • 2026海南食品类公司执照注册优选财税服务商,正规代办地址挂靠全套流程盘点 - 资讯纵览
  • 在线投票怎么弄,云帆投票+西瓜评选+圈投票,2026年最新投票平台深度对比测评 - 投票小程序
  • 大模型训练数据采集:Sourcing、Collecting与Training Data的三层战略
  • 2026年昆山汽车大灯升级改装门店资料昆山车一炫改灯 - Ayu8888
  • 瑞典市政系统被勒索,沃尔沃也遭殃——你的备份系统真扛得住吗?
  • 上海企业AI营销升级指南:2026年五家GEO优化服务商全景测评 - GEO优化
  • LabVIEW高精度拉伸台控制系统
  • 2026茂名市民优选 5 家水质检测服务机构 饮用水污水废水检测实地走访测评整理 - 中安检测集团
  • 【JAVA毕设源码分享】基于springboot大学健身场所管理系统设计与开发(程序+文档+代码讲解+一条龙定制)
  • 终极PDF书签生成指南:如何快速为电子书添加专业导航
  • AI落地失败的根源:解决错误问题而非工具缺陷
  • PHY6222蓝牙开发避坑指南:手机调试时如何看懂并操作那些“Unknown Service”
  • 从零到一:基于华为eNSP的NAT/NAPT实战配置与内外网互通解析
  • MPC7447A硬件设计:时序、JTAG、电源与降额机制详解
  • 2026徐州市鼓楼区家里卫生间漏水、阳台漏水、楼顶漏水、阳台漏水、地下室渗水、阳光房漏水各种房屋漏水情况不用愁!售后无忧,线上质保可查。本地防水补漏公司为您排忧解难! - 防水百科
  • 2026淄博本地土壤检测农田土壤检测哪家强?TOP 正规机构榜单 + 联系方式 - 鉴安检测
  • 【Java IO 笔记】从一段课堂代码看文件读取:为什么不能直接转 String?
  • 2026克孜勒本地土壤检测农田土壤检测哪家强?TOP 正规机构榜单 + 联系方式 - 鉴安检测
  • 2026漳州企业业主高频选择的 5 家危房检测房屋结构安全鉴定机构实地测评整理 - 科信检测
  • LabVIEW软管脉冲疲劳试验