没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
1.Explain 详解
前言:explain(执行计划),使用 explain 关键字可以模拟优化
器执行 sql 查询语句,从而知道 MySQL 是如何处理 sql 语句。explain
主要用于分析查询语句或表结构的性能瓶颈。注:本系列随笔如无特
殊说明都 MySQL 版本都为 5.7.22。
1.explain 的作用
通过 explain+sql 语句可以知道如下内容:
①表的读取顺序。(对应 id)
②数据读取操作的操作类型。(对应 select_type)
③哪些索引可能会被使用。(对应 possible_keys)
④哪些索引被实际使用。(对应 key)
⑤表直接的引用。(对应 ref)
⑥每张表有多少行被优化器查询。(对应 rows)
2.explain 包含的信息
explain 使用:explain+sql 语句,通过执行 explain 可以获得 sql
语句执行的相关信息。
下面对 explain 的表头字段含义进行解释。
注:下图中有些 explain 表头不包含 partitions 和 filtered 字
段,是因为有些截图是直接从视频资料中截取的,当并不影响我们的
分析。
①id
select 查询的序列号,包含一组数字,表示查询中执行 select
子句或操作表的顺序,该字段通常与 table 字段搭配来分析。
#1.id 相同,执行顺序从上到下
id 相同,执行顺序从上到下,搭配 table 列进行观察可知,执行
顺序为 t1->t3->t2。
#2.id 不同,如果是子查询,id 的序号会递增,id 值越大执行优先
级越高。
如果是子查询 id 的序号会递增,id 值越大执行优先级越高,搭
配 table 列可知,执行顺序为 t3->t1->t2。
#3.id 相同不同,同时存在。
id 如果相同,可认为是同一组,执行顺序从上到下。在所有组中,
id 值越大执行优先级越高。所以执行顺序为 t3->derived2(衍生表,
也可以说临时表)->t2。
总结:id 的值表示 select 子句或表的执行顺序,id 相同,执行
顺序从上到下,id 不同,值越大的执行优先级越高。
②select_type
查询的类型,主要用于区别普通查询、联合查询、子查询等查询
类型。其值主要有六个:
#1.SIMPLE
简单的 select 查询,查询中不包含子查询或 union 查询。
#2.PRIMARY
查询中若包含任何复杂的子部分,最外层查询为 PRIMARY,也就
是最后加载的就是 PRIMARY。
#3.SUBQUERY
在 select 或 where 列 表 中 包 含 了 子 查 询 , 就 为 被 标 记 为
SUBQUERY。
#4.DERIVED
在 from 列表中包含的子查询会被标记为 DERIVED(衍生),MySQL
会递归执行这些子查询,将结果放在临时表中。
#5.UNION
若第二个 select 出现在 union 后,则被标记为 UNION,若 union
包含在 from 子句的子查询中,外层 select 将被标记为 DERIVED。
#6.UNION RESULT
从 union 表获取结果的 select
③table
显示 sql 操作属于哪张表的
④partitions
官方定义为 The matching partitions(匹配的分区),该字段应
该是看 table 所在的分区吧(不晓得理解错误没)。值为 NULL 表示
表未被分区。
⑤type
表示查询所使用的访问类型,type 的值主要有八种,该值表示查
询 的 sql 语 句 好 坏 , 从 最 好 到 最 差 依 次 为 :
system>const>eq_ref>ref>range>index>ALL。
要详细了解 type 取值的作用,需要用数据说话。创建 tb_emp(员
工表)和 tb_dept(部门表)。
a)tb_emp 表
DROP TABLE IF EXISTS `tb_emp`;
剩余30页未读,继续阅读
资源评论
开发小牛牛
- 粉丝: 11
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功