如何将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| <derived2> | 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 | <union2,3> | 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 scanrows9762228+- DERIVEDtablederived(temporary(union(sbtest1,sbtest1)))+- Table scan+- TEMPORARYtabletemporary(union(sbtest1,sbtest1))+- Filesort+- Table scan+- UNIONtableunion(sbtest1,sbtest1)+- Table scan|rows4881114|+- Table|tablesbtest1+- Table scanrows4881114+- Tabletablesbtest14 rows in set, 1 warning (0.00 sec)树形展示,看起来就非常直观,从下往上看,SQL如何执行的一目了然 。
如何取消树形展示呢,非常简单,只需要执行下面的命令即可 。
[root@localhost] 20:25:45 [t_db]>pagerDefault pager wasn't set, using stdout.
【如何将MySQL数据库的SQL执行计划树形展示】


    推荐阅读