Analisar o plano de consulta
Execute o comando EXPLAIN para obter um plano de consulta.
Antes de analisar o plano de consulta, você deve ser familiarizar com sua leitura. Se você não estiver familiarizado com a leitura de um plano de consulta, sugerimos a leitura de Criar e interpretar um plano de consulta antes de continuar.
Para analisar os dados fornecidos pelo plano de consulta, siga estas etapas:
-
Identifique as etapas com o custo mais alto. Concentre-se em otimizar estas etapas ao avançar pelas etapas restantes.
-
Veja os tipos de junção:
-
Loop aninhado: Tais junções geralmente ocorrem quando uma condição de junção é omitida. Para soluções recomendadas, consulte Loop aninhado.
-
Hash e junção hash: Junções hash são usadas durante a junção de tabelas em que as colunas de junção não são chaves de distribuição e também não são chaves de classificação. Para soluções recomendadas, consulte Junção de hash.
-
Junção de mesclagem: Nenhuma alteração é necessária.
-
-
Observe qual tabela é usada para a junção interna e qual é usada para a junção externa. O mecanismo de consulta geralmente escolhe a menor tabela para a junção interna e a maior tabela para a junção externa. Se essa escolha não ocorre, suas estatísticas provavelmente estão desatualizadas. Para soluções recomendadas, consulte Estatísticas de tabela ausentes ou desatualizadas.
-
Verifique se há alguma operação de classificação de alto custo. Se houver, consulte Linhas não classificadas ou mal classificadas para as soluções recomendadas.
-
Procure os seguintes operadores de transmissão onde há operações de alto custo:
-
DS_BCAST_INNER: indica que a tabela é transmitida a todos os nós de computação. Isso é adequado para uma tabela pequena, mas não é ideal para uma tabela maior.
-
DS_DIST_ALL_INNER: Indica que toda o workload está em uma única fatia.
-
DS_DIST_BOTH: Indica uma redistribuição pesada.
Para as soluções recomendadas para essas situações, consulte Distribuição de dados pouco satisfatória.
-