B+树叶子结点到底存储了什么?

article/2025/8/26 20:55:45

首先MYSQL默认InnoDB引擎,该引擎默认B+树;先说结论:B+树叶子结点存储的是主键KEY或者具体数据。分情况讨论:

主键KEY

比如说user_name是个索引,当执行该SQL:select * from user_info where `user_name` = 'xiaoming'; InnoDB 就会建立 user_name 索引 B+树,节点里存的是 user_name 这个 KEY,叶子节点存储的数据的是主键 KEY。注意,叶子存储的是主键 KEY!拿到主键 KEY 后,InnoDB 才会去主键索引树里根据刚在 user_name 索引树找到的主键 KEY 查找到对应的数据。

具体数据

在执行 select * from user_info where id = 5 这个语句时,InnoDB 就会查询这颗主键 ID 索引 B+树,找到对应的 user_name='Bob'。

原因

问题来了,为什么 InnoDB 只在主键索引树的叶子节点存储了具体数据,但是其他索引树却不存具体数据呢,而要多此一举先找到主键,再在主键索引树找到对应的数据呢?

其实很简单,因为 InnoDB 需要节省存储空间。一个表里可能有很多个索引,InnoDB 都会给每个加了索引的字段生成索引树,如果每个字段的索引树都存储了具体数据,那么这个表的索引数据文件就变得非常巨大(数据极度冗余了)。从节约磁盘空间的角度来说,真的没有必要每个字段索引树都存具体数据,通过这种看似“多此一举”的步骤,在牺牲较少查询的性能下节省了巨大的磁盘空间,这是非常有值得的。


http://chatgpt.dhexx.cn/article/je2TS1D7.shtml

相关文章

二叉树叶子结点,非叶子节点以及深度的计算

二叉树叶子结点的计算 //统计叶子结点的数目 int LeafNum(BiTree T) {if (!T) {return 0;} else if (!T->lchild && !T->rchild) {return 1;} else {return LeafNum(T->lchild) LeafNum(T->rchild);} }二叉树非叶子节点的计算 //统计非叶子结点的数目 i…

叶子结点

叶子结点 叶子结点是离散数学当中的概念。一棵树当中没有子结点(即度为0)的结点,称为叶子结点,简称“叶子”。 叶子是指度为0的结点,又称为终端结点。 叶子结点 就是度为0的结点 就是没有子结点的结点 n0:…

Pytorch 叶子张量 leaf tensor (叶子节点) (detach)

在Pytorch中,默认情况下,非叶节点的梯度值在反向传播过程中使用完后就会被清除,不会被保留。只有叶节点的梯度值能够被保留下来。 对于任意一个张量来说,我们可以用 tensor.is_leaf 来判断它是否是叶子张量(leaf tenso…

Pytorch学习笔记(一)——自动求导和叶子节点

一、什么是叶子节点 PyTorch中的张量tensor有一个属性是is_leaf,当is_leaf为True时,改tensor是叶子张量,也叫叶子节点。 二、叶子节点的作用 PyTorch有自动求导的功能, 当requires_gradTrue时,PyTorch会自动记录运算…

数据结构-树:根节点、子节点、叶子节点是什么?

前言:这个属于数据结构:树。 下面给个例子图解释(根节点、子节点、叶子节点)。 上图数字 1、3、7是叶子节点;(因为他们下面没有分叉出子节点,所以称为:叶子节点)【度为0】…

数据结构 - 树

树 (1)相关概念 兄弟节点:节点的父节点是同一个节点,所以它们之间互称为兄弟节点。 根节点:没有父节点的节点叫作根节点 叶子节点:没有子节点的节点叫作叶子节点或者叶节点。 节点的高度:节…

根节点、子节点、叶子节点是什么?

前言:这个属于数据结构:树。 下面给个例子图解释(根节点、子节点、叶子节点)。 上图数字 1、3、7是叶子节点;(因为他们下面没有分叉出子节点,所以称为:叶子节点)【度为0】…

弱网、2G、3G、4G测试

1.各项指标 教程指引:弱网测试教程 2.概念介绍 Bandwidth(带宽)、Utilistation(利用百分比)、Round-trip(往返延迟)、MTU(最大传输单元) 3G:300k-2Mbps左…

简单实用Chrome 日常开发功能详解,帮助你上班摸鱼

chrome是目前开发过程中一骑绝尘的浏览器,占有绝对领导地位。其强大的功能和生态圈,让很多开发者爱不释手。但很多的开发者使用chrome还是停留在F12打开控制台查看log、检查元素或者debug打断点阶段,其实chrome的强大的功能远远超过我们的想象…

小米路由器3G如何解决USB3.0 5G WiFi速度慢的问题

经常玩电脑,希望家里有个轻 nas,小米路由器是一个不错的选择,tbw买了一个小米路由器3G看重的是快速的速度(usb3.0 5G Wifi),及小米的可拓展性,使用usb3.0的usb接口,且使用5gb网速&am…

浏览器通过f12来限制网速

浏览器可以使用F12开发者工具来模拟网速的快慢。 打开需要测试的网站,点击F12,再点击选项里的network-no throttling,展示的有几种,offline,快3g,慢3g,或者自定义 点击add可以自定义网速&#…

移动网速测试软件,网速测试大师APP

网速测试大师APP是一款专业的手机网络测试应用,支持一键测速,精准快速,还能全方位分析网速,Wifi和移动网络全检测,30秒测速当前网络状况,做随时随地的测速专家。 该软件整个测速过程精准又快速,…

android 显示网速,随着掌握联网状态 Android手机如何显示实时网速

很多时候手机信号栏明明显示正在联网而且图标也显示正在下载上传中,但就是打不开网页。实际上,此时可能正处于4G→3G切换状态而出现了短暂的断网。那么,如何才能准确掌握手机当前的联网状态呢? 答案很简单,就是通过手机…

Fiddler工具的弱网模拟2G/3G/4G

日常测试工作中,C端用户会因信号和设备网络原因,出现一些恶劣网络的状态,然后出现奇奇怪怪的丢包、重传、UI空白、UI绘制异常等问题,就需要测试人员去模拟这类弱网环境去重现用户反馈的问题,以方便开发同学解决和调优加…

网速测试大师的软件怎么回事,网速测试大师

手机网速测试大师是一款手机网络测试软件,通过手机网速测试大师你可以直接测试你手机的网络速度,无论是WIFI还是手机移动网络都可以检测,让你更加了解你的手机网络。 软件介绍 网速测试大师是一款热度仅次于Ookla Speedtest. net的网速测试工…

限制浏览器网速

需求:限制浏览器网速,拉长请求时间,方便验证请求loading状态是否添加成功。 ps:一般建议给弹窗/按钮增加loading状态,防止重复点击之后多次请求 解决方案:控制台(f12)-网络(Network) No throttling 无限制…

使用chrome进行慢网速测试

前言 在开发的时候,有这么一种情况,点击一个按钮调用一个接口生成数据,之后刷新页面,但是由于网络慢的原因,能够多次点击,但是自己的网络模拟不了很慢的情况,怎么办呢? 使用chrome…

Vue Chrome浏览器手动调节模拟网速

Chrome浏览器手动调节网速 1.首先打开chrome浏览器,按下键盘上的f12键,弹出开发者调试工具 2.点击network——>No throtting弹出选择项 3.选择需要模拟的选项就行了 Fast 3G:表示快的3g网速 Slow 3G:表示慢的3g网速 Offline…

3g显卡测试软件,3G网速测试细则

3G网速测试细则 3G网速测试细则 测试机型:小米手机2、小米手机2电信版、vivo X1st 测试机型 测试软件:speedtest 爱奇艺高清影视 测试软件 测试方法: ① 在同一时间段、同一地点使用Speedtest测试三台手机3G网络条件下的速度 ② 分别使用装有…