导图社区 MySQL进阶-基本概念
这是一个关于MySQL进阶-基本概念的思维导图,包含SQL执行过程、B+树存储结构、语法等。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
基本概念
SQL执行过程
客户端
java程序
Navicat等管理MySQL的这些工具
连接器
控制权限
判断连接的用户(账号)是否有权限操作某些数据
管理连接
查询缓存
分析器
类似于java的编译器,将语法编译成机器可执行的语句
分析客户端发过来的SQL语句
优化器
根据mysql自己的一套优化策略,生成他认为最优的策略(实际上不一定)
使用哪个索引
where条件根据索引,实际调整条件的顺序
执行器
调用对应的存储引擎的接口,查询数据
B+树存储结构
B+树和普通树的区别?
主键索引
普通索引
存储数据的页
大小
每页的大小默认是固定的16k(可调整32k、64k)
那么,每页能够存放多少个node指针?
读取策略
两索引对比
语法
union 和 union all、or区别
union --合并两个select结果集,并去除重复的行
union all --合并两个select结果集,不去重
可否替代or ?
假设表orders的A列和B列都分别建立了索引
or
select * from orders where A='2019' or B='2019'
查询结果
假设有一行数据A和B都是2019,这一行在结果中只会出现一次
union all
select * from orders where A='2019' union all select *from orders where B='2019'
--无法替代
原因
出现重复行
假设有一行数据A和B都是2019,这一行在结果中重复出现一次
除非A列和B列永远都不可能有相同的值,才可以替代or
union
select * from orders where A='2019' union select *from orders where B='2019'
虽然union会去重,但是A集合和B集合没有任何交集不是同一列
所以最后是无法实现去重
教程来源于 美年达分达。B站