前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL 8 查询优化新工具 Explain Analyze

MySQL 8 查询优化新工具 Explain Analyze

作者头像
dys
发布2020-07-07 09:56:44
9680
发布2020-07-07 09:56:44
举报
文章被收录于专栏:性能与架构性能与架构

1. Explain Analyze 介绍

Explain 是我们常用的查询分析工具,可以对查询语句的执行方式进行评估,给出很多有用的线索。

但他仅仅是评估,不是实际的执行情况,比如结果中的 rows,可能和实际结果相差甚大。

Explain AnalyzeMySQL 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. 小结

感谢阅读,希望对你有所帮助

参考资料: https://mysqlserverteam.com/mysql-explain-analyze/ https://www.percona.com/blog/2019/10/28/using-explain-analyze-in-mysql-8/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Explain Analyze 介绍
  • 2. 实践效果
  • 3. 实际环境
  • 4. 小结
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档