内容简介:Explain是我们常用的查询分析工具,可以对查询语句的执行方式进行评估,给出很多有用的线索。但他仅仅是Explain Analyze是
1. Explain Analyze 介绍
Explain是我们常用的查询分析工具,可以对查询语句的执行方式进行评估,给出很多有用的线索。
但他仅仅是 评估 ,不是实际的执行情况,比如结果中的 rows ,可能和实际结果相差甚大。
Explain Analyze是 MySQL 8 中提供的新工具,牛X之处在于可以给出 实际执行情况 。
Explain Analyze是一个查询性能分析工具,可以详细的显示出 查询语句执行过程中,都在哪儿花费了多少时间。
Explain Analyze 会做出查询计划,并且会实际执行,以测量出查询计划中各个关键点的实际指标,例如耗时、条数,最后详细的打印出来。
2. 实践效果
例如有如下一条查询语句:
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;
现在对它执行 Explain Analyze ,只需要添加在 SELECT 前边就行了:
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;
执行结果:
结果中包含了各个执行步骤的详细情况,内容比较多,图片中不方便看,下面咱就拿出其中一条看一下:
Filter: (payment.payment_date like '2005-08%') (cost=117.43 rows=894) (actual time=0.454..194.045 rows=2844 loops=2)
Filter
表示这是执行过滤的一个步骤。
(payment.payment_date like '2005-08%')
这部分是过滤条件。
(cost=117.43 rows=894)
这部分是估算的结果,预计需要花费的时间,和返回的记录条数。
这就是在真正执行之前,查询优化器所做的估算。
(actual time=0.454..194.045 rows=2844 loops=2)
这部分就是实际执行的结果数据了。
time
的结果中分为2个部分,前面的 0.454
是返回第一条记录的耗时,后面的 194.045
是返回所有记录的耗时。
rows
就是实际返回的准确记录条数。
loops
是当前过滤迭代器所执行的循环的数量。
3. 实际环境
如果你想实际试试,可以使用 MySQL 提供的测试数据库 sakila 。
下载地址:
https://dev.mysql.com/doc/index-other.html
![image-20200702114403512](/Users/a/Library/Application Support/typora-user-images/image-20200702114403512.png)
解压后倒入MySQL:
mysql> SOURCE /xxx/sakila-schema.sql; mysql> SOURCE /xxx/sakila-data.sql;
4. 小结
感谢阅读,希望对你有所帮助 :pray:
参考资料:
https://mysqlserverteam.com/mysql-explain-analyze/
https://www.percona.com/blog/2019/10/28/using-explain-analyze-in-mysql-8/
推荐阅读
以上所述就是小编给大家介绍的《MySQL 8 查询优化新工具 Explain Analyze》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- java 分库关联查询工具类
- MySQL 8 查询优化新工具 Explain Analyze
- dba+开源工具:可视化分析MongoDB慢查询日志
- Socialscan:一款准确且快速的在线邮件地址及用户名查询工具
- SQLer:无需编程语言即可将 SQL 查询转换为 RESTful API 的工具
- MassDNS:一款功能强大的高性能DNS子域名查询枚举侦察工具
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。