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