- Categorias:
SYSTEM$EXPLAIN_JSON_TO_TEXT¶
Esta função converte uma saída de EXPLAIN do JSON em um texto formatado.
- Consulte também:
Sintaxe¶
SYSTEM$EXPLAIN_JSON_TO_TEXT( <explain_output_in_json_format> )
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);
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;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}]]} | +-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+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} | | | +------------------------------------------------------------------------------------------------------------------------------------+