SQL Engine Reference (v11)

グラフィカル ユーザー インターフェイス

Query Plan Viewer には、Query ViewerPlan Viewer の 2 つのウィンドウが含まれています。

Query Viewer

Query Viewer では SQL クエリを表示します。一度に表示できるクエリ プランは 1 つだけですが、複数のプランを同時に開いておくことができます。 また Query Viewer には、クエリ プラン ファイルを開く、2 つ以上のプランを同時に開いているときに目的のクエリ プランへ移動する、およびクエリ プランをエクスポートするためのメニュー コマンドが含まれています。

Query Viewer は必要に応じて表示サイズを変更することができます。 SQL クエリの表示を容易にする垂直スクロールバーも備えています。

Plan Viewer

Plan Viewer には、クエリ プランのグラフィック表現がノードを持つツリー形式で含まれます。各ノードはクエリのさまざまなコンポーネントを表します。

Plan Viewer は必要に応じてサイズを変更することができます。 さまざまなサイズでクエリ プラン ツリーを表示できるよう、垂直および水平スクロールバーを備えています。 必要に応じてツリーのサイズを変更したり、ツリーを拡大/縮小したりするためのメニュー コマンドやキーボード ショートカットがあります。

クエリに応じて、異なる種類のノードがQuery Viewerに現れます。 各ノードは、クエリの実行のステップを表します。 たとえば、ベース テーブルから選択する、2 つのテーブルの結果を結合して 1 つの結果セットに入れる、集計値を計算する、グループの変わり目を判断する、グループ結果を組み合わせて 1 つの結果セットに入れるなどを表すことができます。

ノード

次の表にノードをまとめて示します。

表 199 Plan Viewer ノード
ノードの記号
ノードの意味
データベース内のテーブルからデータを得ることを表します。四角形の下に表示される名前は、テーブルの名前です。テーブル名の下に名前が表示されている場合、その名前は、テーブルからデータを取得する際に使用したインデックスを示します。インデックス名の右にあるアスタリスクは、そのインデックスに一意の値が含まれていることを示します。
行の選択操作を表します。かっこ内の単語は、"Normal" か "Range:" のいずれかになります。
  • Normal フィルターは、ダウンストリーム ノードから行が返された後に適用されます。
  • Range フィルターはベース テーブルの真上にのみ現れます。Range フィルターによって、テーブルからインデックス値を基に制限されたレコードが取得されます。
DISTINCT(重複値の削除)操作を実行します。このノードは通常、プラン ツリーの先頭か先頭付近に現れます。クエリから行を返す前に、結果セットから重複を取り除きます。
GROUP BY 句を基に、グループの変わり目を検出します。
SELECT および HAVING 句で集計値を正しく累算するために、Group Break ノードと一緒に働きます。
2 つのノード間の JOIN を実行します。かっこ内の値は、実行される結合(JOIN)の種類を示します。
  • "Outer" は、インデックスを使用しない、左外部結合または右外部結合を示します。
  • "OuterRange" は、インデックスを使用する、左外部結合または右外部結合を示します。
  • "Normal" は、カルテシアン結合を示します。
  • "Range" は、インデックスを使用する内部結合を示します。
集計値の累算を実行します。このノードは MIN、MAX、AVG、COUNT、SUM、および STDEV に対して、これらの集計関数で DISTINCT 句が使われている場合に使用されます。ノードの中の単語は、累算する集計値の種類を示します。
GROUP BY 句と併用して集計値が累算される場合、集計関数ノードはグループ分け(Group Break)ノードとグループ(Group)ノードの間に現れます。
GROUP BY 句が存在しない場合に、集計値の累算を処理します。
メイン クエリの単一のサブクエリによるデータ取得を処理します。このノードは、"root" のクエリ プランを表示している場合には現れません。サブクエリを表示している場合にのみ現れます。
テンポラリ テーブルの作成、およびテンポラリ テーブルからのデータ取得を処理します。このノード下のベース テーブルへの参照は、テンポラリ テーブルの列の参照に変更されます。
UNION および UNION ALL 操作を処理します。基になるクエリ実行プランを繰り返し実行し、UNION 結果セットのデータを取得します。Plan Viewerは、最初のクエリをルート クエリ、2 番目のクエリをサブクエリ 1、以下同様として、UNION を表示します。


メモ

Plan Viewer のサイズの縦横比を変更すると、それに応じてノードを表す記号の縦横比も変わります。 そのため、ノードの表示は上記の表の例と同じように見えるとは限りません。


ノードの詳細

以下のクエリ プラン ノードをダブルクリックすると、ポップアップ ウィンドウが現れ、詳細な情報が表示されます。

上記以外のノードをダブルクリックしても、ノードに関する詳しい情報は提供されません。 詳細情報を持つノード上にマウス カーソルが置かれると、カーソルが手の形に変わります。

次の表では、表示される詳細情報の種類について説明します。

ノードの種類
詳細情報
テーブル
  • テーブルの名前
  • テーブル内の合計行数
  • 読み取る予測行数
  • 範囲の情報。範囲情報は、ベース テーブルが JOIN の右側にあり、テーブルからのデータの取得をインデックスの使用によって最適化できる場合にのみ使用されます。範囲情報には次のものが含まれます。
  • 取得された列
  • 範囲の取得の開始に使用された値(通常は、別のテーブルおよび列の値になります)と取得の終了に使用された値
  • 実行する最初の演算。たとえば、より大きい(GT)、以上(GE)、より小さい(LT)、など。
  • 中止する場合の判断に用いる比較方法(GT、GE など)
フィルター(Normal)
行の評価に使用される条件のテキスト表現
フィルター(Range)
  • 使用されるインデックスに関する情報
  • フィルターが返される行のセットを絞り込む方法
  • テーブルからの最初の読み取りタイプ(GT、GE など)
  • これ以上のレコードの読み取りを停止するために、TRUE と評価されなければならない条件(GT、GE など)
サブクエリ
サブクエリの種類と、サブクエリに対して実行される最適化
順序付きテンポラリ テーブル
  • テンポラリ テーブルに含まれている列の一覧
  • その列がテンポラリ テーブルの行の順序付けに使用されている列(キー)かどうか、あるいはツリーに渡す値であるかどうかを示す印

Plan Viewerにも、プランをさまざまなズーム レベルで表示したり、サブクエリがある場合にはそれを表示したりするためのメニュー コマンドが含まれています。


Query Plan の設定

Query Plan Viewer のタスク