首先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+树叶子结点到底存储了什么?相关推荐

  1. 打印二叉搜索树的叶子结点_求孩子兄弟树叶子节点数目

    记得点击蓝字关注叉酱哦!题目:求孩子-兄弟树叶子节点数目TREE什么是孩子-兄弟树? 孩子兄弟表示法模型,每个结点都有一个指向其第一个孩子的指针,每个结点都有一个指向其第一个右兄弟的指针 . 算法思想 ...

  2. mysql联合索引B 树_B+树和Mysql索引详解

    B+树总结 根据以下几篇文章总结的自己的心得,便于自己理解 B+树内部平衡详解 B+树存储原理 B+树存储 MySQL索引-B+树(看完你就明白了) 从B树.B+树.B*树谈到R 树 我们一般看到的B ...

  3. 叶子结点和分支节点_树的度和结点数的关系

    一.概念 与图论中的"度"不同,树的度是如下定义的:有根树T中,结点x的子女数目称为x的度.也就是:在树中,结点有几个分叉,度就是几. 一个有用的小公式:树中结点数 = 总分叉数 ...

  4. 【恋上数据结构】MySQL的索引底层为何使用 B+树?

    B+树 B+树介绍 硬盘介绍 盘片(platter).盘面(side).读写磁头(head) 磁道(track).扇区(sector) 柱面(cylinder) 磁盘块 操作系统读取硬盘数据的过程 磁 ...

  5. MySQL面试:索引为啥使用B+树而不是B树

    索引的本质 数据库索引,就是数据库管理系统(DBMS)中一个排序的数据结构,用以协助快速查询,更新数据库表中数据 首先数据是以文件的形式存放在磁盘上面的,每一行数据都有它的磁盘地址.如果没有索引的话, ...

  6. 2020最新MySQL数据库面试题( MySQL引索系统+MySQL数据架构+红黑树结构图+B+树)

    视频参考一线互联网大佬一堂课教会你那些年,你未曾了解的MySQL索引优化 [建议收藏] '阿里高级架构师一个视频教会你MySql 各大知识点MySQL系列/ MySQL引索系统/MySQL数据架构/红 ...

  7. PAT甲级1004 Counting Leaves (30分):[C++题解]树、邻接表存储树、dfs遍历树

    文章目录 题目分析 题目链接 题目分析 题意重述:一棵树,求每一层的叶子节点数目. 分析 构造树,使用邻接表来存(相当于存储有向图). 需要一个头结点数组h[N],然后每个头节点往外形成一个单链表e[ ...

  8. mysql vpformysql引擎_MySQL InnoDB引擎B+树索引简单整理说明

    本文出处:http://www.cnblogs.com/wy123/p/7211742.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错 ...

  9. 数据结构(十八)树的定义与存储结构

    一.树的定义 1.树(Tree)是n(n>=0)个结点的有限集.n=0时称为空树.在任意一棵非空树中:(1)有且仅有一个特定的称为根(Root)的结点:(2)当n>1时,其余结点可分为m( ...

最新文章

  1. 【小妙招】【旧版】欢庆网自动搜索请柬console方法
  2. 基于微信的图片放大预览
  3. 为什么不同新旧UPS电池不能混用?浮充电压是什么?
  4. CSS 知识(13---)
  5. linux 无外网情况下安装 mysql
  6. 如何用指针访问opencv cv::Mat数据?ptr<uchar>()
  7. springboot中的spring-session用mysql实现session共享实践
  8. CentOS7.2 部署Ceph分布式存储
  9. [html] IE6文字溢出BUG(别名:多出来的猪、谍影重重)怎么解决呢?
  10. java muki_再次学习 java 类的编译
  11. 专用计算机 一级专用计算机芯片,计算机一级考试 2015年模拟题(一)
  12. less知识点总结(二)
  13. python的模块和类_Python 模块和类
  14. OpenAI对强化学习环境的汇总
  15. python中filter是什么意思_求能人解答python filter()和filter_by()区别是什么
  16. Java处理Json数据
  17. matlab 数学 应用论文,MATLAB在高等数学课程中的应用(图文)
  18. win7连接共享打印机时安装驱动程序出现0x00000bcb错误【解决办法】
  19. 如何下载中国卫星地图高清版大图
  20. 基于华为云ECS的目标检测与识别的昇腾AI开发体验【华为云至简致远】

热门文章

  1. 连载二:Oracle迁移文章大全
  2. 实战演练丨SCN太大引发ORA-600[2252]
  3. 在PyQt中构建 Python 菜单栏、菜单和工具栏
  4. 剖析供应链攻击的防范
  5. 云图说|云数据库MySQL内核小版本升级全攻略
  6. 【我的物联网成长记2】设备如何进行选型?
  7. 深入比特币原理(二)——比特币密钥地址生成
  8. 微型计算机技术第三版第三章答案,微型计算机原理与接口技术第三章习题及答案...
  9. Kotlin学习笔记 第二章 类与对象 第十四 十五节 委托 委托属性
  10. Python 绘制探地雷达堆叠波形图