Teradata-explain
Teradata-説明
EXPLAINコマンドは、解析エンジンの実行計画を英語で返します。 別のEXPLAINコマンドを除き、任意のSQLステートメントで使用できます。 クエリの前にEXPLAINコマンドを使用すると、解析エンジンの実行計画がAMPではなくユーザーに返されます。
EXPLAINの例
次の定義を持つテーブルEmployeeを考えます。
EXPLAINプランの例を以下に示します。
全表スキャン(FTS)
SELECTステートメントで条件が指定されていない場合、オプティマイザーは、テーブルのすべての行にアクセスするフルテーブルスキャンの使用を選択できます。
例
以下は、オプティマイザーがFTSを選択できるサンプルクエリです。
上記のクエリを実行すると、次の出力が生成されます。 ご覧のように、オプティマイザーはすべてのAMPおよびAMP内のすべての行にアクセスすることを選択します。
一意のプライマリインデックス
一意のプライマリインデックスを使用して行にアクセスする場合、1つのAMP操作です。
上記のクエリを実行すると、次の出力が生成されます。 ご覧のとおり、これは単一のAMP検索であり、オプティマイザーは一意のプライマリインデックスを使用して行にアクセスしています。
一意のセカンダリインデックス
Unique Secondary Indexを使用して行にアクセスすると、2アンペアの操作になります。
例
次の定義を持つテーブルSalaryを検討してください。
次のSELECTステートメントを検討してください。
上記のクエリを実行すると、次の出力が生成されます。 ご覧のように、オプティマイザーは一意のセカンダリインデックスを使用して2アンペアで行を取得します。
追加規約
以下は、EXPLAINプランで一般的に見られる用語のリストです。
- (最後の使用)…*
スプールファイルは不要になり、この手順が完了すると解放されます。
- 残留条件なし…*
すべての適用可能な条件が行に適用されています。
- トランザクションの終了… *
トランザクションロックが解除され、変更がコミットされます。
- 重複行の削除…*
重複行はスプールファイルにのみ存在し、テーブルは設定されません。 DISTINCT操作を実行します。
- 行IDのみを抽出するインデックス#nのトラバーサルによって…*
セカンダリインデックス(インデックス#n)で見つかった行IDを含むスプールファイルが構築されます
- SMS(セット操作ステップ)を行います…*
UNION、MINUS、またはINTERSECT演算子を使用して行を結合します。
- ハッシュコードによってすべてのAMPに再配布されます。*
結合の準備のためにデータを再配布します。
- すべてのAMPで複製されます。*
結合の準備として、より小さなテーブルのデータを(SPOOLの観点から)複製します。
- (one_AMP)または(group_AMPs)*
すべてのAMPの代わりに1つのAMPまたはAMPのサブセットが使用されることを示します。