EXPLAINコマンド

EXPLAINコマンドを使用したSQL実行計画の確認方法をご紹介します。
実行計画の情報から、有効なプロジェクションを使用しているか確認することができます。

なお、EXPLAINを付与してSQLを実行した場合は、実行計画を取得するのみで、実際にはSQLは実行されません。

構文

データベースへログインし、確認対象SQLの前に「EXPLAIN」を付与して実行します。


実行例


実行計画の出力形式

実行計画は下記2種類の形式で出力されます。
本記事では、QUERY PLAN DESCRIPTIONをご紹介します。

 ・ QUERY PLAN DESCRIPTION
   実行計画を処理ステップごとに階層表示した出力形式です。

 ・ BASE QUERY PLAN (GraphViz Format)
   Graphvizというツール用の出力形式です。

実行計画内の語句

代表的な語句の意味をご紹介します。

語句意味
Projectionクエリ実行時にオプティマイザが選択したプロジェクション
Filterデータセットに適用されるフィルター(WHERE句の条件値)
STORAGE ACCESS for テーブル名テーブルへのデータアクセス処理
JOIN HASHハッシュ結合処理
Outer結合処理の外部表(結合演算子の左側)
Inner結合処理の内部表(結合演算子の右側)
SORTソート処理

実行計画の読み方

実行計画は各処理を階層構造で出力します。
一般的に、「PATH ID」が大きい処理から先に実行されたものとして読み取ります。
通常は階層の深い処理ほどPATH IDが大きくなります。
※各処理は並列実行されるため、実際の処理順序とは異なります。

上述の実行例の場合は、以下のように読み取ります。

 1. customer表にアクセス (PATH ID:4)
 2. lineorder表にアクセス (PATH ID:3)
 3. lineorder表にアクセスしたデータセットを外部表、customer表にアクセスしたデータセットを内部表とし、
   ハッシュ結合を実行 (PATH ID:2)
 4. ハッシュ結合されたデータセットをソート (PATH ID:1)

各処理ステップにはCost(コスト)とRows(行数)が出力されます。
この情報を基にチューニングすべき処理ステップを絞り、チューニング作業を行います。

検証バージョンについて

この記事の内容はVertica 7.1で確認しています。