概要
SQLの実行計画をツリー構造の図で確認する方法をご案内します。Verticaで実行計画を取得するには、explainの後にSQL文を付けて実行します。
explainによる実行計画にはツリー構造を図で表示するためのコードが一緒に出力されますので、そのコードを使用してツリー構造の図を表示します。
コードからSQLの実行計画をツリー構造の図で表示するためにはGraphviz(フリーソフト)を使用します。
実行例
以下の例でexplainで取得したツリー構造で表示するためのコードをもとにWindows環境で実行計画のツリー構造を図で表示します。
1.explainでSQLを実行し実行計画とツリー構造で表示するためのコードをファイルに出力
1 2 3 4 5 6 7 8 9 |
dbadmin=> \o q1.dot <= q1.dotファイルにexplainの結果を出力します。 dbadmin=> explain <= explainで以下のSQLを実行します。 dbadmin-> select sum(lo_extendedprice*lo_discount) as revenue dbadmin-> from lineorder,date1 dbadmin-> where lo_orderdate = d_datekey dbadmin-> and d_year = 1993 dbadmin-> and lo_discount between 1 and 3 dbadmin-> and lo_quantity < 25; dbadmin=> \o |
※SQLはlineorder表とdate1表を検索して結合する処理です。
2.1で取得したファイルからツリー構造を図で表示するためのコードだけ残してそれ以外は削除
以下のdigraph G {…} が必要な情報になります。 digraph G { <=== ★ここから
graph [rankdir=BT, label = "BASE QUERY PLAN\nQuery: explain\nselect sum(lo_extendedprice*lo_discount) as revenue\nfrom lineorder,date1\nwhere lo_orderdate = d_datekey\n
・
・
・
} <=== ★ここまで(実行計画の最後にあります)
graph [rankdir=BT, label = "BASE QUERY PLAN\nQuery: explain\nselect sum(lo_extendedprice*lo_discount) as revenue\nfrom lineorder,date1\nwhere lo_orderdate = d_datekey\n
・
・
・
} <=== ★ここまで(実行計画の最後にあります)
3.GraphvizでSQLの実行計画をツリー構造を図で出力
Graphvizのdotコマンドを使用し2で編集したファイルからjpegファイルを作成します。
C:\>dot -Tjpg q1.dot -o q1.jpg <= q1.jpg(jpegファイル)が作成されます
※dotコマンドの詳細に関してはdot -vで確認してください。4.3で作成されたjpegファイルの表示
SQLの実行計画がツリー構造が図で表示されます。lineorder表とdate1表を検索して結合していることがわかります。