GET_QUERY_OPERATOR_STATS および EXPLAIN 関数およびコマンド: 配列よって表現される親演算子¶
以下のコマンドと関数は、クエリの実行に関する詳細を提供します。
EXPLAIN、 EXPLAIN USING TABULAR、および EXPLAIN USING JSON (EXPLAIN USING TEXT には影響なし)
これらのコマンドと関数の出力には、クエリを構成する演算子ノードのツリー内の各演算子ノードに関する情報が含まれます。
バックグラウンド¶
現在、この情報には、1つの親ノードを識別する列またはプロパティが含まれます。これは、演算子ノードが複数の親ノードを持つ状況は処理しません。
たとえば、以下のクエリのプロファイルを作成するとします。
WITH wv AS (
SELECT a FROM t WHERE a % 2 = 1
)
SELECT a FROM wv WHERE a % 3 = 1
UNION ALL
SELECT a FROM wv WHERE a % 5 = 1;
このクエリのプロファイルでは、 WithClause [4]
ノードには複数の親ノードがあります。
上記のクエリの場合、 GET_QUERY_OPERATOR_STATS と EXPLAIN のコマンドと関数の出力には、 WithReference [3]
を WithClause [4]
の親ノードとして識別子する列またはプロパティがあります。ただし、 WithReference [3]
と WithReference [8]
の2つの親ノードがあります。
出力での変更¶
現在のリリースでは、親ノードの既存の列またはプロパティは、親ノードの IDs の配列を含む以下の列またはプロパティのいずれかに置き換えられます。
SQL コマンドまたは関数 |
既存の列またはプロパティ |
新しい列またはプロパティ |
---|---|---|
EXPLAIN および SYSTEM$EXPLAIN_PLAN_JSON |
|
|
GET_QUERY_OPERATOR_STATS |
|
|
EXPLAIN コマンドおよび EXPLAIN_JSON 関数の表形式出力の変更¶
次のステートメントを実行したとします。
EXPLAIN WITH wv AS (
SELECT a FROM t WHERE a % 2 = 1
)
SELECT a FROM wv WHERE a % 3 = 1
UNION ALL
SELECT a FROM wv WHERE a % 5 = 1;
出力は以下のように変化しました。
- 以前:
出力には、単一の親ノード ID を含むparent列が含まれます。
+------+------+--------+---------------+ ... | step | id | parent | operation | ... +------+------+--------+---------------+ ... | NULL | NULL | NULL | GlobalStats | ... | 1 | 0 | NULL | Result | ... | 1 | 1 | 0 | UnionAll | ... | 1 | 2 | 1 | Filter | ... | 1 | 3 | 2 | WithReference | ... | 1 | 4 | 3 | WithClause | ... ...
- 現在:
出力には、親ノード IDs の配列を含むparentOperators列が含まれます。
+------+------+-----------------+---------------+ ... | step | id | parentOperators | operation | ... |------+------+-----------------+---------------+ ... | NULL | NULL | NULL | GlobalStats | ... | 1 | 0 | NULL | Result | ... | 1 | 1 | [0] | UnionAll | ... | 1 | 2 | [1] | Filter | ... | 1 | 3 | [2] | WithReference | ... | 1 | 4 | [3, 8] | WithClause | ... ...
EXPLAIN_JSON 関数の場合、関数に渡されたプランに親演算子に関する情報が含まれていない場合、 parentOperators
列は NULL になります。
EXPLAIN コマンドおよび SYSTEM$EXPLAIN_PLAN_JSON の JSON 出力での変更¶
クエリプランの JSON 出力を生成するステートメントを実行するとします。例:
EXPLAIN USING JSON WITH wv AS (
SELECT a FROM t WHERE a % 2 = 1
)
SELECT a FROM wv WHERE a % 3 = 1
UNION ALL
SELECT a FROM wv WHERE a % 5 = 1;
出力は以下のように変化しました。
- 以前:
出力には、単一の親ノード ID を含むparentプロパティが含まれます。
{ ... "Operations": [[ ... {"id":1,"parent":0,"operation":"UnionAll"}, {"id":2,"parent":1,"operation":"Filter", ...}, {"id":3,"parent":2,"operation":"WithReference"}, {"id":4,"parent":3,"operation":"WithClause", ...}, ...
- 現在:
出力には、parentOperatorsプロパティが含まれ、これには親ノード IDs の配列が含まれます。
{ ... "Operations":[[ ... {"id":1,"operation":"UnionAll","parentOperators":[0]}, {"id":2,"operation":"Filter",... , "parentOperators":[1]}, {"id":3,"operation":"WithReference","parentOperators":[2]}, {"id":4,"operation":"WithClause",... ,"parentOperators":[3,8]}, ...
GET_QUERY_OPERATOR_STATS 関数の出力での変更¶
次のようなステートメントを実行するとします。
WITH wv AS (
SELECT a FROM t WHERE a % 2 = 1
)
SELECT a FROM wv WHERE a % 3 = 1
UNION ALL
SELECT a FROM wv WHERE a % 5 = 1;
SET lid = LAST_QUERY_ID();
SELECT * FROM TABLE(GET_QUERY_OPERATOR_STATS($lid));
出力は以下のように変化しました。
- 以前:
出力には PARENT_OPERATOR_ID 列が含まれ、この列には親ノード ID が1つ含まれています。
+-----+---------+-------------+--------------------+---------------+ ... | ... | STEP_ID | OPERATOR_ID | PARENT_OPERATOR_ID | OPERATOR_TYPE | ... +-----+---------+-------------+--------------------+---------------+ ... | ... | 1 | 0 | NULL | Result | ... | ... | 1 | 1 | 0 | UnionAll | ... | ... | 1 | 2 | 1 | Filter | ... | ... | 1 | 3 | 2 | WithReference | ... | ... | 1 | 4 | 3 | WithClause | ... ...
- 現在:
出力には、親ノード IDs の配列を含む PARENT_OPERATORS 列が含まれます。
|-----+---------+-------------+------------------+---------------+ ... | ... | STEP_ID | OPERATOR_ID | PARENT_OPERATORS | OPERATOR_TYPE | ... |-----+---------+-------------+------------------+---------------+ ... | ... | 1 | 0 | NULL | Result | ... | ... | 1 | 1 | [ | UnionAll | ... | | | | 0 | | ... | | | | ] | | ... | ... | 1 | 2 | [ | Filter | ... | | | | 1 | | ... | | | | ] | | ... | ... | 1 | 3 | [ | WithReference | ... | | | | 2 | | ... | | | | ] | | ... | ... | 1 | 4 | [ | WithClause | ... | | | | 3, | | ... | | | | 8 | | ... | | | | ] | | ... ...
参照: 1175