Uso de insights de consulta para melhorar o desempenho

Se houver condições que afetem o desempenho da consulta, o Snowflake fornece insights sobre essas condições. Cada insight inclui uma mensagem que explica como o desempenho da consulta pode ser afetado e fornece uma recomendação geral para melhorar o desempenho.

Você pode acessar esses insights consultando a exibição QUERY_INSIGHTS.

As próximas seções fornecem detalhes sobre os insights de consulta:

Lista de tipos de insights

A exibição QUERY_INSIGHTS fornece os insights, que incluem:

  • Uma mensagem sobre a condição detectada e como ela pode afetar o desempenho da consulta.

  • Detalhes sobre a parte da consulta que produziu a condição.

  • Uma próxima etapa sugerida para abordar a condição, caso ela afete negativamente o desempenho.

A tabela a seguir lista os tipos de insights por ID de tipo.

ID de tipo

Insight

QUERY_INSIGHT_NO_FILTER_ON_TOP_OF_TABLE_SCAN

Sem filtro na verificação da tabela

QUERY_INSIGHT_INAPPLICABLE_FILTER_ON_TABLE_SCAN

Filtro não aplicável

QUERY_INSIGHT_UNSELECTIVE_FILTER

Filtro não seletivo

QUERY_INSIGHT_FILTER_WITH_CLUSTERING_KEY

O filtro usa a chave de clustering

QUERY_INSIGHT_SEARCH_OPTIMIZATION_USED

A consulta se beneficiou da otimização de pesquisa

QUERY_INSIGHT_JOIN_WITH_NO_JOIN_CONDITION

Junção sem condição de junção

QUERY_INSIGHT_NESTED_EXPLODING_JOIN

Junção explosiva (junção aninhada)

QUERY_INSIGHT_EXPLODING_JOIN

Junção explosiva (não aninhada)

QUERY_INSIGHT_REMOTE_SPILLAGE

Vazamento remoto

Sem filtro na verificação da tabela

Uma consulta ou subconsulta não tem cláusula WHERE, o que significa que a consulta examina uma tabela inteira e pode retornar mais linhas do que o pretendido.

Para melhorar o desempenho, adicione uma cláusula WHERE para reduzir a quantidade de dados verificados.

Filtro não aplicável

Uma cláusula WHERE não filtra nenhuma linha, o que significa que a consulta pode verificar mais dados do que o pretendido.

Para melhorar o desempenho, adicione uma condição mais seletiva à cláusula WHERE ou torne a condição existente mais seletiva.

Filtro não seletivo

Uma cláusula WHERE não reduz significativamente o número de linhas, o que significa que a consulta pode verificar mais dados do que o pretendido.

Ao contrário do insight Filtro não aplicável, este insight indica que a cláusula WHERE está filtrando algumas linhas, mas poderia ter sido mais seletiva.

Para melhorar o desempenho, adicione uma condição mais seletiva à cláusula WHERE ou torne a condição existente mais seletiva.

O filtro usa a chave de clustering

A consulta se beneficiou da filtragem em uma chave de clustering para a tabela.

A consulta se beneficiou da otimização de pesquisa

A consulta se beneficiou da filtragem em uma coluna configurada para otimização de pesquisa.

Junção sem condição de junção

A junção não tem a condição de junção. O resultado é uma junção cruzada, que retorna todas as combinações possíveis de linhas.

Para reduzir a contagem de linhas produzida por essa junção, especifique uma ou mais condições de junção.

Junção explosiva (junção aninhada)

Uma junção que inclui a saída de pelo menos uma outra junção está retornando muito mais linhas do que as tabelas que estão sendo unidas. Isso pode indicar um problema com as condições de junção para as junções filhas.

Para evitar que a junção produza mais linhas do que as tabelas unidas contêm, adicione ou altere as condições de junção para as junções filhas. Além disso, adicionar uma cláusula WHERE a uma subconsulta usada em uma junção filha pode reduzir o número de linhas retornadas.

Junção explosiva (não aninhada)

Uma junção de dois conjuntos de dados (por exemplo, tabelas, exibições ou saída de chamadas de função de tabela) está retornando muito mais linhas do que as tabelas unidas contêm. Isso pode indicar um problema com a condição de junção.

Para evitar que a junção produza mais linhas do que as tabelas que estão sendo unidas, adicione ou altere a condição de junção. Além disso, adicionar uma cláusula WHERE a uma subconsulta usada por esta junção pode reduzir o número de linhas retornadas.

Vazamento remoto

Essa consulta examinou mais dados do que o warehouse tinha capacidade para armazenar. Como resultado, o warehouse vazou dados para o armazenamento, o que deixou o processamento da consulta mais lento.

Para evitar esse problema, use um warehouse maior com mais capacidade. Se usar um warehouse maior não for uma opção, altere a consulta para processar os dados em lotes menores.

Limitações

  • Os insights são produzidos para consultas SQL feitas em bancos de dados e processadas por warehouses.

  • Os insights não são produzidos para:

    • Consultas que envolvem objetos seguros.

    • Consultas executadas em tabelas híbridas (Unistore).

    • Consultas geradas por aplicativos nativos.

    • Consultas EXPLAIN.

    • Consultas que reutilizam resultados.