mysql叶子结点存储的什么_B+树叶子结点到底存储了什么?
首先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 都会给每个加了索引的字段生成索引树,如果每个字段的索引树都存储了具体数据,那么这个表的索引数据文件就变得非常巨大(数据极度冗余了)。从节约磁盘空间的角度来说,真的没有必要每个字段索引树都存具体数据,通过这种看似“多此一举”的步骤,在牺牲较少查询的性能下节省了巨大的磁盘空间,这是非常有值得的。
mysql叶子结点存储的什么_B+树叶子结点到底存储了什么?相关推荐
- 打印二叉搜索树的叶子结点_求孩子兄弟树叶子节点数目
记得点击蓝字关注叉酱哦!题目:求孩子-兄弟树叶子节点数目TREE什么是孩子-兄弟树? 孩子兄弟表示法模型,每个结点都有一个指向其第一个孩子的指针,每个结点都有一个指向其第一个右兄弟的指针 . 算法思想 ...
- mysql联合索引B 树_B+树和Mysql索引详解
B+树总结 根据以下几篇文章总结的自己的心得,便于自己理解 B+树内部平衡详解 B+树存储原理 B+树存储 MySQL索引-B+树(看完你就明白了) 从B树.B+树.B*树谈到R 树 我们一般看到的B ...
- 叶子结点和分支节点_树的度和结点数的关系
一.概念 与图论中的"度"不同,树的度是如下定义的:有根树T中,结点x的子女数目称为x的度.也就是:在树中,结点有几个分叉,度就是几. 一个有用的小公式:树中结点数 = 总分叉数 ...
- 【恋上数据结构】MySQL的索引底层为何使用 B+树?
B+树 B+树介绍 硬盘介绍 盘片(platter).盘面(side).读写磁头(head) 磁道(track).扇区(sector) 柱面(cylinder) 磁盘块 操作系统读取硬盘数据的过程 磁 ...
- MySQL面试:索引为啥使用B+树而不是B树
索引的本质 数据库索引,就是数据库管理系统(DBMS)中一个排序的数据结构,用以协助快速查询,更新数据库表中数据 首先数据是以文件的形式存放在磁盘上面的,每一行数据都有它的磁盘地址.如果没有索引的话, ...
- 2020最新MySQL数据库面试题( MySQL引索系统+MySQL数据架构+红黑树结构图+B+树)
视频参考一线互联网大佬一堂课教会你那些年,你未曾了解的MySQL索引优化 [建议收藏] '阿里高级架构师一个视频教会你MySql 各大知识点MySQL系列/ MySQL引索系统/MySQL数据架构/红 ...
- PAT甲级1004 Counting Leaves (30分):[C++题解]树、邻接表存储树、dfs遍历树
文章目录 题目分析 题目链接 题目分析 题意重述:一棵树,求每一层的叶子节点数目. 分析 构造树,使用邻接表来存(相当于存储有向图). 需要一个头结点数组h[N],然后每个头节点往外形成一个单链表e[ ...
- mysql vpformysql引擎_MySQL InnoDB引擎B+树索引简单整理说明
本文出处:http://www.cnblogs.com/wy123/p/7211742.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错 ...
- 数据结构(十八)树的定义与存储结构
一.树的定义 1.树(Tree)是n(n>=0)个结点的有限集.n=0时称为空树.在任意一棵非空树中:(1)有且仅有一个特定的称为根(Root)的结点:(2)当n>1时,其余结点可分为m( ...
最新文章
- 【小妙招】【旧版】欢庆网自动搜索请柬console方法
- 基于微信的图片放大预览
- 为什么不同新旧UPS电池不能混用?浮充电压是什么?
- CSS 知识(13---)
- linux 无外网情况下安装 mysql
- 如何用指针访问opencv cv::Mat数据?ptr<uchar>()
- springboot中的spring-session用mysql实现session共享实践
- CentOS7.2 部署Ceph分布式存储
- [html] IE6文字溢出BUG(别名:多出来的猪、谍影重重)怎么解决呢?
- java muki_再次学习 java 类的编译
- 专用计算机 一级专用计算机芯片,计算机一级考试 2015年模拟题(一)
- less知识点总结(二)
- python的模块和类_Python 模块和类
- OpenAI对强化学习环境的汇总
- python中filter是什么意思_求能人解答python filter()和filter_by()区别是什么
- Java处理Json数据
- matlab 数学 应用论文,MATLAB在高等数学课程中的应用(图文)
- win7连接共享打印机时安装驱动程序出现0x00000bcb错误【解决办法】
- 如何下载中国卫星地图高清版大图
- 基于华为云ECS的目标检测与识别的昇腾AI开发体验【华为云至简致远】