カテゴリ:

システム関数

EXPLAIN_JSON

この関数は、 EXPLAIN プランを JSON からテーブルに変換します。出力は、コマンド EXPLAIN USING TABULAR <ステートメント> の出力と同じです。

こちらもご参照ください。

SYSTEM$EXPLAIN_PLAN_JSONSYSTEM$EXPLAIN_JSON_TO_TEXT

構文

EXPLAIN_JSON( <explain_output_in_json_format> )
Copy

引数

explain_output_in_json_format

JSON 対応の文字列として EXPLAIN 出力を含む、文字列、または文字列に評価される式です。通常、この入力は関数 SYSTEM$EXPLAIN_PLAN_JSON の出力です。リテラル文字列を使用する場合は、一重引用符文字 ' で囲む必要があります。

戻り値

この関数は、 EXPLAIN 出力を含むテーブルを行の順序付きセットとして返します。

この関数の出力は、 EXPLAIN USING TABULAR <SQLステートメント> の出力と同等です。

使用上の注意

  • 入力は定数式でなければなりません。たとえば、列に対してこの関数を呼び出すことはできません。

  • 文字列リテラルが入力として渡される場合、文字列を囲む区切り文字は、一重引用符 ' または二重ドル記号 $$ のいずれかです。文字列リテラルに一重引用符が含まれる(また二重ドル記号が含まれない)場合、二重ドル記号で文字列を区切ると、文字列内に埋め込まれた一重引用符文字をエスケープする必要がなくなります。

  • 出力テーブルは、 RESULT_SCAN 関数を使用して処理できます。

  • この関数は、 EXPLAIN 情報を JSON から表形式に変換します。多くの場合、 JSON 値は SYSTEM$EXPLAIN_PLAN_JSON 関数から直接または間接的に生成されます。たとえば、 SYSTEM$EXPLAIN_PLAN_JSON からの出力をテーブルに保存し、後でこの EXPLAIN_JSON 関数を使用して表示できます。

  • 出力は表形式であるため、この関数は テーブル関数 として分類されます。

次の例は、この関数の使用方法を示しています。

SELECT * FROM TABLE(
    EXPLAIN_JSON(
        SYSTEM$EXPLAIN_PLAN_JSON(
           'SELECT Z1.ID, Z2.ID FROM Z1, Z2 WHERE Z2.ID = Z1.ID')
        )
    );
+------+------+-----------------+-------------+------------------------------+-------+--------------------------+-----------------+--------------------+---------------+
| step | id   | parentOperators | operation   | objects                      | alias | expressions              | partitionsTotal | partitionsAssigned | bytesAssigned |
|------+------+-----------------+-------------+------------------------------+-------+--------------------------+-----------------+--------------------+---------------|
| NULL | NULL |          NULL | GlobalStats | NULL                         | NULL  | NULL                     |               2 |                  2 |          1024 |
|    1 |    0 |            NULL | Result      | NULL                         | NULL  | Z1.ID, Z2.ID             |            NULL |               NULL |          NULL |
|    1 |    1 |             [0] | InnerJoin   | NULL                         | NULL  | joinKey: (Z2.ID = Z1.ID) |            NULL |               NULL |          NULL |
|    1 |    2 |             [1] | TableScan   | TESTDB.TEMPORARY_DOC_TEST.Z2 | NULL  | ID                       |               1 |                  1 |           512 |
|    1 |    3 |             [1] | JoinFilter  | NULL                         | NULL  | joinKey: (Z2.ID = Z1.ID) |            NULL |               NULL |          NULL |
|    1 |    4 |             [3] | TableScan   | TESTDB.TEMPORARY_DOC_TEST.Z1 | NULL  | ID                       |               1 |                  1 |           512 |
+------+------+-----------------+-------------+------------------------------+-------+--------------------------+-----------------+--------------------+---------------+
Copy