SQL ステートメント | 説明 |
---|---|
SET QRYPLAN=<on | off> | Query Plan Viewer を使用してクエリ プランを作成するかどうかを、データベース エンジンに指示します。 |
SET QRYPLANOUTPUT=<NULL | ファイル名> | クエリ プラン ファイルの場所と名前を設定します。NULL は、クエリ プラン ファイルを作成しないように指示します。1 つのクエリ プラン ファイルに複数のクエリのプラン結果を入れることができます。参考までに、クエリ プラン ファイルには、クエリごとに使用するエンコードのコード ページ識別子が含まれています。クエリでどのデータベース エンコードが使用されているかに関係なく、Query Plan Viewer はワイド文字データを正しく表示します。 デフォルトでは、Query Plan Viewer は拡張子が .qpf のファイル名を探します。ファイル名の拡張子はどんなものでも使用できますし、省略してもかまいません。 たとえば、select_salary という名前のクエリ プランを作成し、そのクエリ プランをドライブ D のルートにあるディレクトリ mydirectory に保存します。 SET QRYPLANOUTPUT='d:\mydirectory\select_salary.qpf' データベース エンジンがクエリ プランの出力ファイルを作成するため、パスは、データベース エンジンが実行されているマシン上の場所にする必要があります。パスがクライアント側の場所やクライアントのドライブ割り当てを参照していてはいけません。 |
ノードの記号 | ノードの意味 |
---|---|
![]() | データベース内のテーブルからデータを得ることを表します。四角形の下に表示される名前は、テーブルの名前です。テーブル名の下に名前が表示されている場合、その名前は、テーブルからデータを取得する際に使用したインデックスを示します。インデックス名の右にあるアスタリスクは、そのインデックスに一意の値が含まれていることを示します。 |
![]() | 行の選択操作を表します。かっこ内の単語は、"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 を表示します。 |
ノードの種類 | 詳細情報 |
---|---|
テーブル | • テーブルの名前 • テーブル内の合計行数 • 読み取る予測行数 • 範囲の情報。範囲情報は、ベース テーブルが JOIN の右側にあり、テーブルからのデータの取得をインデックスの使用によって最適化できる場合にのみ使用されます。範囲情報には次のものが含まれます。 • 取得された列 • 範囲の取得の開始に使用された値(通常は、別のテーブルおよび列の値になります)と取得の終了に使用された値 • 実行する最初の演算。たとえば、より大きい(GT)、以上(GE)、より小さい(LT)、など。 • 中止する場合の判断に用いる比較方法(GT、GE など) |
フィルター(Normal) | 行の評価に使用される条件のテキスト表現。ワイド文字データが存在する場合、そのデータは正しく表示されます。 |
フィルター(Range) | • 使用されるインデックスに関する情報 • フィルターが返される行のセットを絞り込む方法 • テーブルからの最初の読み取りタイプ(GT、GE など) • これ以上のレコードの読み取りを停止するために、TRUE と評価されなければならない条件(GT、GE など) |
サブクエリ | サブクエリの種類と、サブクエリに対して実行される最適化 |
順序付きテンポラリ テーブル | • テンポラリ テーブルに含まれている列の一覧 • その列がテンポラリ テーブルの行の順序付けに使用されている列(キー)かどうか、あるいはツリーに渡す値であるかどうかを示す印 |
要素および属性 | 説明 | 親要素 | 子要素 |
---|---|---|---|
<QPF filename=filename> filename:QPF ファイルのパスと名前。 | XML ファイルのエクスポート元となる QPF ファイル。1 つの XML ファイルに 1 つの QPF ファイルが対応します。 | ヘッダー情報 | <Query> |
<Query number=number> number:Query Plan Viewer で表示されるクエリ番号。1 番目は 1、2 番目は 2 というように番号が付けられます。 | <QPF> ファイルのクエリ。1 つの XML ファイルにつき、少なくとも 1 つのクエリが対応します。 | <QPF> | <SQL> <TreeRoot> |
<SQL> | プランの生成に使用する SQL ステートメント。 SQL スクリプトが、大文字 N で始まる Unicode 文字の文字列リテラルを宣言している場合、そのプレフィックスは <SQL> 要素に表示されます。<Filter> の子要素 <Properties> も参照してください。 | <Query> | |
<TreeRoot name=name> name:"Root Query" または "Subquery X"。 | ルート クエリまたはサブクエリのどちらかを示します。 | <Query> | 以下のすべてのノード要素: <Join> <Filter> <Base> <Distinct> <Set> <FCalc> <Group> <GroupBreak> <OrderedTempTable> <Union> <Subquery> |
ノードの要素 | それぞれの要素がクエリ プラン ツリー内の 1 つのノードです(SQL ステートメントの一部)。 | <TreeRoot>、または別のノード要素の <Child>、<LeftChild>、<RightChild> | |
<Join> | <TreeRoot> | <Text> <Properties> <LeftChild> <RightChild> | |
<Filter> | SQL スクリプトが、大文字 N で始まる Unicode 文字の文字列リテラルを宣言している場合、そのプレフィックスは <Properties> 子要素には表示されません。<SQL> も参照してください。 | <TreeRoot> | <Text> <Properties> <Child> |
<Base> | ダイアグラム ツリー(樹形図)における葉を表します。 | <TreeRoot> | <Text> <Properties> |
<Distinct> | <TreeRoot> | <Properties> <Child> | |
<Set> | <TreeRoot> | <Text> <Properties> <SetString> <Child> | |
<FCalc> | <TreeRoot> | <Properties> <LeftChild> <RightChild> | |
<Group> | <TreeRoot> | <Properties> <Child> | |
<GroupBreak> | <TreeRoot> | <Properties> <Child> | |
<OrderedTempTable> | <TreeRoot> | <Properties> <Child> | |
<Union> | <TreeRoot> | <Properties> <Child> | |
<Subquery> | <TreeRoot> | <Properties> <Child> | |
ノードの要素の子 | 多様。ノードに関する情報の追加、またはノード タグの子へのリンク。 | 多様 | |
<Text> | <Join> <Filter> <Set> <Base>(オプション) | ||
<Properties> | すべてのノード要素 | ||
<SetString> | <Set> | ||
<Child> | <Filter> <Distinct> <Set> <Group> <GroupBreak> <OrderedTempTable> <Union> <Subquery> | ||
<LeftChild> | <Join> <FCalc> | ||
<RightChild> | <Join> <FCalc>(オプション) |