Categorias:

Funções do sistema

SYSTEM$EXPLAIN_JSON_TO_TEXT

Esta função converte uma saída de EXPLAIN do JSON em um texto formatado.

Consulte também:

SYSTEM$EXPLAIN_PLAN_JSON , EXPLAIN_JSON

Sintaxe

SYSTEM$EXPLAIN_JSON_TO_TEXT( <explain_output_in_json_format> )
Copy

Argumentos

explain_output_in_json_format

Uma cadeia de caracteres, ou uma expressão que avalia como uma cadeia de caracteres, contendo EXPLAIN saída como uma cadeia de caracteres compatível com JSON. Se a entrada for uma cadeia de caracteres, a cadeia de caracteres deve ser delimitada por aspas simples '.

Retornos

A função retorna um VARCHAR contendo a saída EXPLAIN como texto que foi formatado para ser relativamente fácil de ser lido por humanos.

Notas de uso

  • Esta função converte informações EXPLAIN de JSON em texto formatado. Muitas vezes, o valor JSON é produzido direta ou indiretamente a partir da função SYSTEM$EXPLAIN_PLAN_JSON. Por exemplo, a saída de SYSTEM$EXPLAIN_PLAN_JSON poderia ser armazenada em uma tabela, e exibida posteriormente usando esta função SYSTEM$EXPLAIN_JSON_TO_TEXT.

  • Se uma cadeia de caracteres literal for passada como entrada, o delimitador ao redor da cadeia de caracteres pode ser o símbolo de aspas simples ' ou um sinal de dólar duplo $$. Se a cadeia de caracteres literal contiver aspas simples (e não contiver sinais de cifrão duplo), então a delimitação da cadeia de caracteres com sinais de cifrão duplo evitará a necessidade de escapar dos caracteres de aspas simples embutidos dentro da cadeia de caracteres.

Exemplos

O(s) exemplo(s) abaixo usa(m) estas tabelas:

CREATE TABLE Z1 (ID INTEGER);
CREATE TABLE Z2 (ID INTEGER);
CREATE TABLE Z3 (ID INTEGER);
Copy

Se você quiser armazenar a saída EXPLAIN no formato JSON, mas exibi-la como texto formatado, você poderá chamar SYSTEM$EXPLAIN_JSON_TO_TEXT() como mostrado abaixo:

Primeiro, obter a saída EXPLAIN no formato JSON e armazená-la em uma tabela:

SET QUERY_10 = 'SELECT Z1.ID, Z2.ID FROM Z1, Z2 WHERE Z2.ID = Z1.ID';
CREATE TABLE json_explain_output_for_analysis (
    ID INTEGER,
    query VARCHAR,
    explain_plan VARCHAR
    );
INSERT INTO json_explain_output_for_analysis (ID, query, explain_plan) 
    SELECT 
        1,
        $QUERY_10 AS query,
        SYSTEM$EXPLAIN_PLAN_JSON($QUERY_10) AS explain_plan;
Copy

O JSON se parece com a saída mostrada abaixo:

SELECT query, explain_plan FROM json_explain_output_for_analysis;
+-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| QUERY                                               | EXPLAIN_PLAN                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
|-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| SELECT Z1.ID, Z2.ID FROM Z1, Z2 WHERE Z2.ID = Z1.ID | {"GlobalStats":{"partitionsTotal":2,"partitionsAssigned":2,"bytesAssigned":1024},"Operations":[[{"id":0,"operation":"Result","expressions":["Z1.ID","Z2.ID"]},{"id":1,"parentOperators":[0],"operation":"InnerJoin","expressions":["joinKey: (Z2.ID = Z1.ID)"]},{"id":2,"parentOperators":[1],"operation":"TableScan","objects":["TESTDB.TEMPORARY_DOC_TEST.Z2"],"expressions":["ID"],"partitionsAssigned":1,"partitionsTotal":1,"bytesAssigned":512},{"id":3,"parentOperators":[1],"operation":"JoinFilter","expressions":["joinKey: (Z2.ID = Z1.ID)"]},{"id":4,"parentOperators":[3],"operation":"TableScan","objects":["TESTDB.TEMPORARY_DOC_TEST.Z1"],"expressions":["ID"],"partitionsAssigned":1,"partitionsTotal":1,"bytesAssigned":512}]]} |
+-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Copy

Depois de armazenar o JSON em uma tabela, você pode passar o JSON para a função SYSTEM$EXPLAIN_JSON_TO_TEXT para convertê-lo em um formato de texto de fácil leitura para humanos, chamando SYSTEM$EXPLAIN_JSON_TO_TEXT:

SELECT SYSTEM$EXPLAIN_JSON_TO_TEXT(explain_plan) 
    FROM json_explain_output_for_analysis
    WHERE json_explain_output_for_analysis.ID = 1;
+------------------------------------------------------------------------------------------------------------------------------------+
| SYSTEM$EXPLAIN_JSON_TO_TEXT(EXPLAIN_PLAN)                                                                                          |
|------------------------------------------------------------------------------------------------------------------------------------|
| GlobalStats:                                                                                                                       |
| 	bytesAssigned=1024                                                                                                                                                                                                                                                                         |
| 	partitionsAssigned=2                                                                                                                                                                                                                                                                         |
| 	partitionsTotal=2                                                                                                                                                                                                                                                                         |
| Operations:                                                                                                                        |
| 1:0     ->Result  Z1.ID, Z2.ID                                                                                                     |
| 1:1          ->InnerJoin  joinKey: (Z2.ID = Z1.ID)                                                                                 |
| 1:2               ->TableScan  TESTDB.TEMPORARY_DOC_TEST.Z2  ID  {partitionsTotal=1, partitionsAssigned=1, bytesAssigned=512}      |
| 1:3               ->JoinFilter  joinKey: (Z2.ID = Z1.ID)                                                                           |
| 1:4                    ->TableScan  TESTDB.TEMPORARY_DOC_TEST.Z1  ID  {partitionsTotal=1, partitionsAssigned=1, bytesAssigned=512} |
|                                                                                                                                    |
+------------------------------------------------------------------------------------------------------------------------------------+
Copy