EXPLAIN¶
Retorna o plano de execução lógica para a instrução SQL especificada.
Um plano explicativo mostra as operações (por exemplo, varreduras de tabela e junções) que o Snowflake realizaria para executar a consulta.
- Consulte também:
SYSTEM$EXPLAIN_PLAN_JSON , SYSTEM$EXPLAIN_JSON_TO_TEXT , EXPLAIN_JSON
Sintaxe¶
Parâmetros¶
statementEsta é a instrução SQL para a qual você quer o plano de explicação.
USING output_formatEsta cláusula opcional especifica o formato de saída. Os formatos de saída possíveis são:
JSON: a saída JSON é mais fácil de armazenar em uma tabela e consulta.
TABULAR: a saída tabular é geralmente mais fácil de ler pelo homem do que a saída JSON.
TEXT: a saída de texto formatado é geralmente mais fácil de ler pelo homem do que a saída JSON.
O padrão é TABULAR.
Saída¶
A saída contém as seguintes informações:
Coluna |
Descrição |
|---|---|
|
A maioria das consultas contém uma única etapa, mas algumas são executadas como múltiplas etapas distintas. Esta coluna denota a qual etapa a operação pertence. |
|
Identificador exclusivo atribuído a cada operação no plano de consulta. |
|
Matriz de identificadores para os nós pais da operação. No perfil de consulta, um pai é mostrado acima de seu filho com um link ligando os dois. |
|
Name of the operation, for example, Result, Filter, TableScan, Join, or CreateTableFromArchiveData. |
|
Name of the object referenced by a table scan operation, for example, table, materialized view, secure view, or ARCHIVE OF <table>. |
|
Alias de um objeto referenciado, se o objeto tiver recebido um alias na consulta. |
|
Lista de expressões relevantes para a operação atual, tais como filtros, predicados de junção, projeções, agregações etc. |
|
O número total de micropartições no objeto de banco de dados referenciado. |
|
O número de partições do objeto referenciado que são deixadas após a remoção do tempo de compilação, ou seja, o número de partições que podem ser digitalizadas pela consulta. |
|
The number of bytes contained in the partitionsAssigned. |
Notas de uso¶
EXPLAIN compila a instrução SQL, mas não a executa, portanto EXPLAIN não requer um warehouse em funcionamento.
O plano EXPLAIN pode ser diferente dependendo do tamanho do warehouse atual. Se você executar o EXPLAIN fora de um warehouse atual, o Snowflake constrói o plano EXPLAIN com base na capacidade de um warehouse XSMALL.
Embora EXPLAIN não consuma nenhum crédito de computação, a compilação da consulta consome créditos do serviço de nuvem, assim como outras operações de metadados.
Para pós-processar a saída deste comando, você pode:
Usar a função RESULT_SCAN, que trata a saída como uma tabela que pode ser consultada.
Gerar a saída no formato JSON e inserir a saída no formato JSON em uma tabela para análise posterior. Se você armazenar a saída no formato JSON, você pode usar a função SYSTEM$EXPLAIN_JSON_TO_TEXT ou EXPLAIN_JSON para converter o JSON em um formato legível para humanos (seja tabular ou texto formatado).
Os valores assignedPartitions e assignedBytes são estimativas de limite superior para a execução da consulta. Otimizações de tempo de execução como a redução da junção podem diminuir o número de partições e bytes digitalizados durante a execução da consulta.
O plano EXPLAIN é o plano “lógico” de explicação. Mostra as operações que serão realizadas e sua relação lógica umas com as outras. A ordem real de execução das operações no plano não corresponde necessariamente à ordem lógica mostrada pelo plano.
Se algum dos objetos de banco de dados da declaração EXPLAIN for um objeto INFORMATION_SCHEMA, a instrução falhará com o erro
EXPLAIN command has insufficient privilege on object <objName>.
Exemplos¶
Este exemplo mostra a saída EXPLAIN para uma simples consulta em duas pequenas tabelas.
Criar as tabelas:
Gerar o plano EXPLAIN em formato tabular para a consulta:
Gerar o plano EXPLAIN para a consulta como texto formatado:
Gerar o plano EXPLAIN para a consulta como JSON: