Catégories :

Fonctions système

EXPLAIN_JSON

Cette fonction convertit un plan EXPLAIN à partir de JSON en table. La sortie est la même que la sortie de la commande EXPLAIN USING TABULAR <instruction >.

Voir aussi :

SYSTEM$EXPLAIN_PLAN_JSON , SYSTEM$EXPLAIN_JSON_TO_TEXT

Syntaxe

EXPLAIN_JSON( <explain_output_in_json_format> )
Copy

Arguments

explain_output_in_json_format

Chaîne ou expression dont le résultat est une chaîne, contenant une sortie EXPLAIN en tant que chaîne compatible JSON. En général, cette entrée est la sortie de la fonction SYSTEM$EXPLAIN_PLAN_JSON. Si une chaîne littérale est utilisée, elle doit être entourée de guillemets simples '.

Renvoie

La fonction renvoie une table contenant la sortie EXPLAIN sous la forme d’un ensemble ordonné de lignes.

La sortie de cette fonction est équivalente à la sortie de EXPLAIN USING TABULAR <instruction_sql>.

Notes sur l’utilisation

  • L’entrée doit être une expression constante. Vous ne pouvez pas appeler cette fonction sur une colonne, par exemple.

  • Si un littéral de chaîne est validé en entrée, le délimiteur autour de la chaîne peut être soit un guillemet simple ' soit un double signe dollar $$ . Si le littéral de chaîne contient des guillemets simples (et ne contient pas de signes dollar double), la délimitation de la chaîne avec des signes dollar double évite d’avoir à échapper les caractères de guillemet simple incorporés à l’intérieur de la chaîne.

  • La table de sortie peut être traitée à l’aide de la fonction RESULT_SCAN .

  • Cette fonction convertit les informations EXPLAIN à partir du format JSON au format tabulaire. Souvent, la valeur JSON est produite directement ou indirectement à partir de la fonction SYSTEM$EXPLAIN_PLAN_JSON. Par exemple, la sortie de SYSTEM$EXPLAIN_PLAN_JSON peut être stockée dans une table, puis affichée ultérieurement à l’aide de cette fonction EXPLAIN_JSON.

  • Étant donné que la sortie est tabulaire, cette fonction est classée comme une fonction de table.

Exemples

L’exemple suivant montre comment utiliser cette fonction :

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