MySQL EXPLAIN ANALYZE
本文转载自“MySQL解决方案工程师”公众号,由 徐轶韬翻译
如何使用?
SELECT first_name, last_name, SUM(amount) AS total
FROM staff INNER JOIN payment ON staff.staff_id = payment.staff_id AND payment_date LIKE '2005-08%'
GROUP BY first_name, last_name;
+——————+—————+—————+
| first_name | last_name | total |
+——————+—————+—————+
| Mike | Hillyer | 11853.65 |
| Jon | Stephens | 12218.48 |
+——————+—————+—————+
2 rows in set (0,02 sec)
EXPLAIN FORMAT=TREE
SELECT first_name, last_name, SUM(amount) AS total
FROM staff INNER JOIN payment ON staff.staff_id = payment.staff_id AND payment_date LIKE '2005-08%'
GROUP BY first_name, last_name;
-> Table scan ><temporary> -> Aggregate using temporary table -> Nested loop inner join (cost=1757.30 rows=1787) -> Table scan >(cost=3.20 rows=2) -> Filter: (payment.payment_date like '2005-08%') (cost=117.43 rows=894) -> Index lookup >using idx_fk_staff_id (staff_id=staff.staff_id) (cost=117.43 rows=8043)
EXPLAIN ANALYZE
SELECT first_name, last_name, SUM(amount) AS total
FROM staff INNER JOIN payment ON staff.staff_id = payment.staff_id AND payment_date LIKE '2005-08%'
GROUP BY first_name, last_name;
-> Table scan ><temporary> (actual time=0.001..0.001 rows=2 loops=1) -> Aggregate using temporary table (actual time=58.104..58.104 rows=2 loops=1) -> Nested loop inner join (cost=1757.30 rows=1787) (actual time=0.816..46.135 rows=5687 loops=1) -> Table scan >(cost=3.20 rows=2) (actual time=0.047..0.051 rows=2 loops=1) -> Filter: (payment.payment_date like '2005-08%') (cost=117.43 rows=894) (actual time=0.464..22.767 rows=2844 loops=2) -> Index lookup >using idx_fk_staff_id (staff_id=staff.staff_id) (cost=117.43 rows=8043) (actual time=0.450..19.988 rows=8024 loops=2
- 获取第一行的实际时间(以毫秒为单位)
- 获取所有行的实际时间(以毫秒为单位)
- 实际读取的行数
- 实际循环数
让我们看一个具体的示例,使用过滤条件的迭代器成本估算和实际度量,该迭代器过滤2005年8月的数据(上面EXPLAIN ANALYZE输出中的第13行)。
Filter: (payment.payment_date like '2005-08%')
(cost=117.43 rows=894)
(actual time=0.464..22.767 rows=2844 loops=2)
- 如果疑惑为何花费这么长时间,请查看时间。执行时间花在哪里?
- 如果您想知道为什么优化器选择了该计划,请查看行计数器。如果估计的行数与实际的行数之间存在较大差异(即,几个数量级或更多),需要仔细看一下。优化器根据估算值选择计划,但是查看实际执行情况可能会告诉您,另一个计划会更好。
- 检查查询计划: EXPLAIN FORMAT = TREE
- 分析查询执行: EXPLAIN ANALYZE
- 了解计划选择: Optimizer trace
扫码加入MySQL技术Q群
MySQL EXPLAIN ANALYZE相关推荐
- 根据条件查询某条记录的条数_「性能与架构」MySQL 8 查询优化新工具 Explain Analyze...
来源:性能与架构公众号 1. Explain Analyze 介绍 Explain 是我们常用的查询分析工具,可以对查询语句的执行方式进行评估,给出很多有用的线索. 但他仅仅是评估,不是实际的执行情况 ...
- MySQL的explain analyze增强功能
我们排查关系型数据库的SQL性能问题时,执行计划是重要的手段之一,看执行计划有很多种方法,Oracle可以参考<查询执行计划的几种方法>.<获取执行计划的方法对比>,MySQL ...
- 对mysql explain讲的比较清楚的
对mysql explain讲的比较清楚的 explain结果的每行记录显示了每个表的相关信息,每行记录都包含以下几个字段: id 本次 select 的标识符.在查询中每个 select都有一个顺序 ...
- mysql explain insert_简述Mysql Explain 命令
MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP).这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL语句的.这条命令并没有提供任何调整建议,但它能够提供重要的信息帮 ...
- 简单了解SQL性能优化工具MySql Explain
点击上方蓝色字体,选择"设为星标" 优质文章,及时送达 写在前面 MySql Explain是对SQL进行性能优化不可或缺的工具,通过他我们可以对SQL进行一定的分析和性能优化,降 ...
- Mysql Explain 详解
Mysql Explain 详解 一.语法 explain < table_name > 例如: explain select * from t3 where id=3952602; 二. ...
- [转]MySQL Explain详解
在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有 ...
- mysql extended_explain之三:MYSQL EXPLAIN语句的extended 选项学习体会,分析诊断工具之二...
MySQL 的explain命令有一个extended选项,我想可以很多人都没有注意,因为它对命令的输出结果没有任何改变,只是增加了一个warning.这个 warning中显示了MySQL对SQL的 ...
- MySQL - Explain深度剖析
文章目录 生猛干货 官方文档 Explain介绍 测试数据 explain 使用 explain重要列说明 id select_type simple primary subquery derived ...
最新文章
- 禁用计算机系统错误汇报,技术员给你关于win10关闭自动发送错误报告的具体方法...
- Linux执行mount挂载覆盖文件的还原
- php大商创 安装,大商创X2020最新纯净服务器安装教程
- python中list与array互相转换
- TinyMCE 5 正式版发布,重磅更新!!!
- 有功功率 无功功率 功率因数
- dnspod ddns 下载_简约时尚休闲女装毛衣针织衫春装详情页_psd素材免费下载_ 750*13450像素(编号:24815329)...
- 因为项目的原因,要学习J2EE了
- excel怎么设置自动计算_Excel工作进度表,自动甘特进度图,函数计算简单实用...
- 如何修改Maven本地仓库位置
- Python百钱百鸡问题
- 电磁波,无线电,Wifi 4G,摩擦生电
- CSS(七)元素过渡、变化、动画
- IPsec-Tools配置之racoon
- div点击穿透,CSS属性pointer-events :none;实现护眼模式, 夜间模式遮罩
- 微信无法定位 请打开定位服务器,微信定位是灰色的点不开是怎么回事?该怎么解决问题呢?...
- 四、Testbench
- 【Java】继承、多态、接口
- 入门PCB设计-DY工作室
- 计算机没有外审的核心期刊,国内核心期刊投稿经验总结战友们共同分享丁香园论坛...
热门文章
- ng-后台管理之其他文档
- Android 4.1 (Jelly Bean) 源码编译过程总结
- github python抢票_实测两款 GitHub 开源抢票插件,所有坑都帮你踩过了
- 计算机专业课ds是什么,ds学长科普贴之扯谈计算机
- 截止8月10日!2022年芜湖市核心技术攻关项目“揭榜挂帅”榜单申报奖补流程
- 《数字孪生电网白皮书》发布 UINO打造电力行业数字化转型新引擎
- 揭秘 | 一分钟看懂半导体FOWLP封装技术全过程!
- 静态环形队列(C语言)
- Qt Qwdget 汽车仪表知识点拆解6 自定义控件
- 前端面试题:不积跬步无以至千里;不积小流无以成江海;程序人生的精彩需要坚持不懈、脚踏实地的积累。