B+树 mysql
1、数据库中最常见的慢查询优化方式是什么?
加索引
2、为什么加索引能优化慢查询?
索引其实是一个数据结构,B+树。
B+树
一个m阶的B+树具有如下几个特征:
1.有k个子树的中间节点包含有k个元素(B树中是k-1个元素),每个元素不保存数据,只用来索引,所有数据都保存在叶子节点。2.所有的叶子结点中包含了全部元素的信息,及指向含这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。3.所有的中间节点元素都同时存在于子节点,在子节点元素中是最大(或最小)元素。
B+树的优势:
1.单一节点存储更多的元素,使得查询的IO次数更少。
2.所有查询都要查找到叶子节点,查询性能稳定。
3.3.所有叶子节点形成有序链表,便于范围查询。
3、你知道哪些数据结构可以提高查询速度?
哈希表、完全平衡二叉树、B+树。
4、那这些数据结构既然都能优化查询速度,mysql为何选择用B+树?
一个节点里面可以存多个元素:磁盘IO元素有冗余+叶子节点之间有指针:范围查找B+树的优势(见上面)
5、为什么一个节点为1页(16K)就够了?
假如有个高度为2的B+树:result = 叶子节点数 * 一个叶子节点里能存放的数据条数叶子节点数 = 根节点的指针数 = {索引值+ 指针}组合数 = 索引值个数假设一行数据的大小-=1KB(合理的值)一个叶子节点能够存放的数据条数?16KB / 1KB = 16条索引值个数?16KB / {int类型索引值8B + 指针6B} (14B) = 16KB / 14B = 1170result = 1170*16=18720B+树高度为2 : 1170*16=18720B+树高度为3: 1170 * 1170 * 16 = 21902400
6、mysql两种存储引擎下的B+树使用
InnoDB中的B+树:
InnoDB种主键索引的叶子节点的数据区域存储的是数据记录,辅助索引存储的是主键值:
辅助索引:
MyISAM中的B+树:
MYISAM中叶子节点的数据区域存储的是数据记录的地址。
7、B+树 VS B树:
B+树的非叶子节点不存储数据,只有叶子节点才存储数据;
而B树的非叶子节点和叶子节点都会存储数据,会导致非叶子节点存储的索引值
会更少,树的高度相对会比B+树高,平均的I/O效率会比较低,所以使用B+树作
为索引的数据结构。
再加上B+树的叶子节点之间会有指针相连,也方便进行范围查找。
8、InnoDB总结:
InnoDB中的主键索引和实际数据是绑定在一起的,也就是说InnoDB的一个表一
定要有索引,如果一个表没有手动建立主键索引,InnnoDB会查看有内有唯一索
引,如果有则选用唯一索引作为主键索引,如果连唯一索引也没有,则会默认建
立一个隐藏的主键索引(用户不可见)。另外,InnoDB的主键索引要比MyISAM的主键索引查询效率要高(少一次磁盘IO),并且比辅助索引也要高很多。所以,我们在使用InnoDB作为存储引擎时,我们最好:1、手动创建主键索引2、尽量利用主键索引查询
9、到底什么是索引?
大学老师定义:索引就像是输的目录。mysql官网定义:indexes are used to find rows with specific column values quickly.简单理解:索引是一种优化查询的数据结构。
10、 MySQL总结:
B+树可以更好的结合磁盘IO原理,提高查询效率。Innodb一定要有主键,没有主键以唯一索引为主键,否则会建立一个隐藏主键Innodb的数据是和主键索引存在一起的(数据在叶子节点中,MyISAM的叶子结点数据区域存储的是数据地址)建立索引时要考虑已有索引,一个sql语句只会选择花费最低的一个索引执行索引是一种有序的数据结构(B+树),一个节点可以存多个有序的元素,所以要利用好最左前缀原则。
11、MySQL索引的本质
索引是一种有序的数据结构
12、mysql索引的底层原理
B+树实现,具体见上面描述。PS:一般来说,索引本身也很大,不可能全部存储在内存中,因此索引往往以索引文件的形式存储的磁盘上。
转载于:https://blog.51cto.com/jiaxiaoxu/2374395
B+树 mysql相关推荐
- mysql数据库慕课答案_智慧树MySQL数据库设计与应用慕课答案
智慧树MySQL数据库设计与应用慕课答案 更多相关问题 [单选] TDD-LTE中一个子帧包含()时隙, [多选] 调整天线下倾角可以改变:() [单选] 多级破碎时,总破碎比等于多机破碎比的(). ...
- mysql数据库设计与应用答案智慧树_智慧树MySQL数据库设计与应用完整免费答案...
智慧树MySQL数据库设计与应用完整免费答案 更多相关问题 [问答题,简答题] 保育员在教师组织教育活动时应做哪些配合工作? [填空题] 幼儿园的安全教育包括防火.防触电.放走失.防烫伤.防食物.防摔 ...
- 不属于mysql常量的是_MySQL中,下面______常量的写法是不正确的?-智慧树MySQL数据库设计与应用章节答案...
MySQL数据库设计与应用:MySQL中,下面______常量的写法是不正确的?[?ж???] A:'2.1E5 B:0x123abc C:b'121' D:null MySQL数据库设计与应用章节测 ...
- B+树|MYSQL索引使用原则
''MYSQL一直了解得都不多,之前写sql准备提交生产环境之前的时候,老员工帮我检查了下sql,让修改了一下存储引擎,当时我使用的是Myisam,后面改成InnoDB了.为什么要改成这样,之前都没有 ...
- B+树:MySQL数据库中建立索引的数据结构
在MySQL数据库中是通过B+树的数据结构建立索引的. 相比二叉树,B树是一种多叉树,总层数更少,磁盘io次数也会相应减少.而与B树不同的是,B+树把索引和数据分开存储,数据以链表的形式存放在B+树的 ...
- mysql函数包含的意思_MySQL存储函数的特性说明中,______表示函数体不包含SQL语句。-智慧树MySQL数据库设计与应用章节答案...
MySQL数据库设计与应用:MySQL存储函数的特性说明中,______表示函数体不包含SQL语句.[?????] A:containssql B:modifiessqldata C:nosql D: ...
- 智慧树mysql章节答案免费_智慧树初识数据库—Mysql完整免费答案
智慧树初识数据库-Mysql完整免费答案 更多相关问题 [多选] 微机线路保护装置的纵联保护的通道可以是(). [多选] 分层式结构的变电站综合自动化系统中,管理层由一台或多台微机组成,其具体功能一般 ...
- B+树 -- MySQL数据库索引
文章目录 1. 定义清楚问题 2. 尝试学过的数据结构解决问题 3. 改造二叉查找树来解决问题 4. 总结 为了加速数据库中数据的查找速度,我们常对表中数据创建索引.数据库索引是如何实现的呢?底层使用 ...
- 智慧树mysql章节答案免费_智慧树_初识数据库—Mysql_完整免费答案
智慧树_初识数据库-Mysql_完整免费答案 更多相关问题 [单选题]以下各类人群中,蛋白质营养状况处于负氮平衡的是 [单选题]- Tom, why were you _____ from schoo ...
- mysql数据库设计与应用答案智慧树_知到智慧树MySQL数据库设计与应用完整免费答案...
发展制造业的一个主要目的就是更好的提高整条供应链上的库存水平.() 衡量数量正确性的指标中常见的有().A.仓储物品完好率B.仓储物品盈亏率C.采购计划完成率D.供应 属于沉没成本的是().A.延误成 ...
最新文章
- 热榜第一!GitHub 标星 5.6w,如何用 Python 实现所有算法?
- 改进YOLOv3 | IA-YOLO让恶劣天气的目标检测起飞了!!!
- 《你要么出众,要么出局》读书笔记
- python入门之函数调用内置函数_第九篇 python基础之函数,递归,内置函数
- Ashikhmin-Shirley, cook- torrance, ward -duer 对比
- 软测管理工具实践-01
- 10067mysql_MYSQL数据库mysql Non-Transactional Database Only(只支持MyISAM)
- CSS、JavaScript和Ajax实现图片预加载的三大方法及优缺点分析
- python--正则表达式 字符串匹配
- 【百度地图】——利用三级联动加载百度地图
- Python与Go插入排序
- Google Code Review代码审查标准
- IDEA报错解决:Cannot resolve com.oracle:ojdbc7:12.1.0.2或‘com.oracle:ojdbc7:12.1.0.2‘ not found
- SIMULATE ANNEAL
- GBase 8c V3.0.0数据类型——备份控制函数
- 刘万祥老师讲如何利用条件格式色阶制作数据地图
- 卓文萱在北京净万家像街头卖艺似的骗子粉丝做公益绯闻男友辰亦儒看不惯假惺惺模样破口大骂
- 第三方短信平台服务提供商是什么?
- 机器自动翻译古文拼音 - 十大宋词 - 水调歌头 明月几时有 苏轼
- 武汉市征集人工智能领域技术成果等通知-2022年申请时间及条件
热门文章
- onload 事件、DOMContentLoaded事件、DOM加载顺序
- ElasticSearch 2 (18) - 深入搜索系列之控制相关度
- 深入Java集合学习系列:SynchronousQueue实现原理
- Spring之Bean配置
- SQL——Hibernate SQL增删改查
- 第十三章 确定性策略梯度(Deterministic Policy Gradient Algorithms,DPG)-强化学习理论学习与代码实现(强化学习导论第二版)
- 【LeetCode】【字符串】题号:242. 有效的字母异位词
- 从零基础入门Tensorflow2.0 ----二、5.1 超参数搜索
- python in visual studio
- EXCEL VLOOKUP函数的使用