GET_QUERY_OPERATOR_STATS および EXPLAIN 関数およびコマンド: 配列よって表現される親演算子

注意

この動作変更は2023_05バンドルにあります。

バンドルの現在のステータスについては、 バンドル履歴 をご参照ください。

以下のコマンドと関数は、クエリの実行に関する詳細を提供します。

これらのコマンドと関数の出力には、クエリを構成する演算子ノードのツリー内の各演算子ノードに関する情報が含まれます。

バックグラウンド

現在、この情報には、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;
Copy

このクエリのプロファイルでは、 WithClause [4] ノードには複数の親ノードがあります。

クエリプロファイルの演算子ノードのツリー

上記のクエリの場合、 GET_QUERY_OPERATOR_STATS と EXPLAIN のコマンドと関数の出力には、 WithReference [3]WithClause [4] の親ノードとして識別子する列またはプロパティがあります。ただし、 WithReference [3]WithReference [8] の2つの親ノードがあります。

出力での変更

現在のリリースでは、親ノードの既存の列またはプロパティは、親ノードの IDs の配列を含む以下の列またはプロパティのいずれかに置き換えられます。

SQL コマンドまたは関数

既存の列またはプロパティ

新しい列またはプロパティ

EXPLAIN および SYSTEM$EXPLAIN_PLAN_JSON

parent

parentOperators

GET_QUERY_OPERATOR_STATS

PARENT_OPERATOR_ID

PARENT_OPERATORS

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;
Copy

出力は以下のように変化しました。

以前:

出力には、単一の親ノード 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;
Copy

出力は以下のように変化しました。

以前:

出力には、単一の親ノード 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", ...},
    ...
Copy
現在:

出力には、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]},
    ...
Copy

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;
Copy
SET lid = LAST_QUERY_ID();
Copy
SELECT * FROM TABLE(GET_QUERY_OPERATOR_STATS($lid));
Copy

出力は以下のように変化しました。

以前:

出力には 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