EXPLAIN Statement
ステートメントの実行プランを表示します。
構文:
例:
EXPLAIN の種類
AST
— 抽象構文木。SYNTAX
— ASTレベルの最適化後のクエリテキスト。QUERY TREE
— クエリツリーの最適化後のクエリツリー。PLAN
— クエリ実行プラン。PIPELINE
— クエリ実行パイプライン。
EXPLAIN AST
クエリのASTをダンプします。すべてのタイプのクエリに対応しており、SELECT
だけではありません。
例:
EXPLAIN SYNTAX
構文最適化後のクエリを返します。
例:
EXPLAIN QUERY TREE
設定:
run_passes
— クエリツリーをダンプする前にすべてのクエリツリーのパスを実行します。デフォルト:1
。dump_passes
— クエリツリーをダンプする前に使用されたパスに関する情報をダンプします。デフォルト:0
。passes
— 実行するパスの数を指定します。-1
に設定すると、すべてのパスを実行します。デフォルト:-1
。
例:
EXPLAIN PLAN
クエリプランのステップをダンプします。
設定:
header
— ステップの出力ヘッダーを印刷します。デフォルト: 0。description
— ステップの説明を印刷します。デフォルト: 1。indexes
— 使用されたインデックス、フィルタリングされたパーツの数、および適用された各インデックスのフィルタリングされたグラニュールの数を表示します。デフォルト: 0。 MergeTree テーブルでサポートされています。actions
— ステップアクションについての詳細情報を印刷します。デフォルト: 0。json
— クエリプランのステップを JSON 形式の行として印刷します。デフォルト: 0。不要なエスケープを避けるため、TSVRaw形式を使用することをお勧めします。
json=1
の場合、ステップ名には一意のステップ識別子のサフィックスが含まれます。
例:
ステップとクエリコストの推定はサポートされていません。
json = 1
の場合、クエリプランはJSON形式で表現されます。すべてのノードは、常に Node Type
と Plans
のキーを持つ辞書です。Node Type
はステップ名の文字列です。Plans
は子ステップの説明の配列です。他のオプションのキーはノードタイプと設定に応じて追加される場合があります。
例:
description
= 1 の場合、Description
キーがステップに追加されます:
header
= 1 の場合、Header
キーがステップに列の配列として追加されます。
例:
indexes
= 1 の場合、Indexes
キーが追加されます。これは使用されたインデックスの配列を含みます。各インデックスは Type
キー(文字列 MinMax
, Partition
, PrimaryKey
または Skip
)とオプションのキーで説明されます:
Name
— インデックス名(現在はSkip
インデックスにのみ使用されます)。Keys
— インデックスで使用されるカラムの配列。Condition
— 使用された条件。Description
— インデックスの説明(現在はSkip
インデックスにのみ使用されます)。Parts
— インデックス適用前後のパーツの数。Granules
— インデックス適用前後のグラニュールの数。
例:
actions
= 1 の場合、追加されたキーはステップタイプに依存します。
例:
EXPLAIN PIPELINE
設定:
header
— 各出力ポートのヘッダーを印刷します。デフォルト: 0。graph
— DOT グラフ記述言語で記述されたグラフを印刷します。デフォルト: 0。compact
—graph
設定が有効になっている場合、グラフをコンパクトモードで印刷します。デフォルト: 1。
compact=0
と graph=1
の場合、プロセッサの名前には一意のプロセッサ識別子のサフィックスが含まれます。
例:
EXPLAIN ESTIMATE
クエリを処理する際にテーブルから読み込まれる行数、マーク、パーツの推定数を表示します。 MergeTree ファミリーのテーブルで動作します。
例
テーブルの作成:
クエリ:
結果:
EXPLAIN TABLE OVERRIDE
テーブル関数を介してアクセスされるテーブルスキーマに対するテーブルオーバーライドの結果を表示します。 また、バリデーションを行い、オーバーライドが何らかの失敗を引き起こす場合は例外をスローします。
例
リモート MySQL テーブルが以下のようになっていると仮定します。
結果:
バリデーションは完全ではないため、成功したクエリがオーバーライドが問題を引き起こすことがないことを保証するものではありません。