如何将MySQL数据库的SQL执行计划树形展示

今天给大家分享一个小技巧吧,在MySQL数据库里,使用explain命令,查看的SQL执行计划都是以表格方式展示,有时候看起来觉得不够直观

例如:

[root@localhost] 20:23:52 [t_db]>explain SELECT * FROM ( SELECT * FROM sbtest1 UNION SELECT * FROM sbtest1 ORDER BY c DESC) t LIMIT 1;+—-+————–+————+————+——+—————+——+———+——+———+———-+———————————+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+—-+————–+————+————+——+—————+——+———+——+———+———-+———————————+| 1 | PRIMARY | | NULL | ALL | NULL | NULL | NULL | NULL | 9762228 | 100.00 | NULL || 2 | DERIVED | sbtest1 | NULL | ALL | NULL | NULL | NULL | NULL | 4881114 | 100.00 | NULL || 3 | UNION | sbtest1 | NULL | ALL | NULL | NULL | NULL | NULL | 4881114 | 100.00 | NULL || NULL | UNION RESULT | | NULL | ALL | NULL | NULL | NULL | NULL | NULL | NULL | Using temporary; Using filesort |+—-+————–+————+————+——+—————+——+———+——+———+———-+———————————+4 rows in set, 1 warning (0.00 sec)

这个执行计划,如果不太熟悉同学,可能就不太知道,SQL执行的时候,到底是先使用临时表呢,还是先文件排序。但是如果用树形展示,就非常直观明了。

[root@localhost] 20:24:02 [t_db]>pager pt-visual-explainPAGER set to ‘pt-visual-explain'[root@localhost] 20:24:27 [t_db]>explain SELECT * FROM ( SELECT * FROM sbtest1 UNION SELECT * FROM sbtest1 ORDER BY c DESC) t LIMIT 1;Table scanrows 9762228+- DERIVED table derived(temporary(union(sbtest1,sbtest1))) +- Table scan +- TEMPORARY table temporary(union(sbtest1,sbtest1)) +- Filesort +- Table scan +- UNION table union(sbtest1,sbtest1) +- Table scan | rows 4881114 | +- Table | table sbtest1 +- Table scan rows 4881114 +- Table table sbtest14 rows in set, 1 warning (0.00 sec)

树形展示,看起来就非常直观,从下往上看,SQL如何执行的一目了然。

如何取消树形展示呢,非常简单,只需要执行下面的命令即可。

[root@localhost] 20:25:45 [t_db]>pagerDefault pager wasn’t set, using stdout.

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年6月23日
下一篇 2022年6月23日

相关推荐

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息