O plano de consulta EXPLAIN - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

O plano de consulta EXPLAIN

O PostgreSQL fornece EXPLAIN as opções EXPLAIN ANALYZE e para retornar planos de consulta com detalhes sobre como a consulta será executada.

A declaração EXPLAIN

A EXPLAIN instrução retorna o plano de consulta que o planejador do PostgreSQL gera para uma determinada instrução. O plano de consulta mostra o seguinte:

  • Como as tabelas envolvidas em uma declaração serão digitalizadas (por exemplo, por varredura de índice ou varredura sequencial)

  • Como várias tabelas serão unidas (por exemplo, junção de hash, junção de mesclagem ou junção de loop aninhada)

Compreender o plano é fundamental para melhorar o desempenho da consulta. Depois de entender o plano, você pode se concentrar em onde a consulta está demorando muito e tomar medidas para reduzir o tempo.

Usando EXPLAIN ANALYZE

No PostgreSQLEXPLAIN, só gerará um plano para a instrução dada. Se você adicionar a ANALYZE palavra-chave, EXPLAIN retornará o plano, executará a consulta e mostrará o tempo de execução real e a contagem de linhas para cada etapa. Isso é indispensável para analisar o desempenho da consulta.

Importante

Ao usarEXPLAIN ANALYZE, tenha cuidado com INSERTUPDATE, DELETE e.

Como ler o plano de consulta EXPLAIN

Um plano de consulta do PostgreSQL é uma estrutura em árvore que consiste em vários nós. O plano de EXPLAIN consulta mostra as etapas que o mecanismo de banco de dados usa para executar uma consulta. O plano de consulta fornece as seguintes informações:

  • O tipo de operação realizada, como varreduras sequenciais, varreduras de índice ou junções de loops aninhados.

  • Um rótulo, comoSeq Scan, ou Index ScanNested Loop, para descrever a operação que está sendo executada.

  • O nome da tabela ou índice que está sendo processado pela consulta.

  • Colunas de custo e linha com informações sobre o custo estimado em uma unidade arbitrária de computação e o número de linhas processadas.

  • A condição do filtro de qualquer filtro aplicado na operação, como a where condição.

  • Uma representação visual das etapas, com cada operação mostrada como um nó e setas conectando as operações. A ordem das operações é mostrada da esquerda para a direita, com as operações anteriores alimentando as operações posteriores.

A captura de tela a seguir mostra o plano de consulta para uma varredura sequencial.

Plano de consulta mostrado na guia Saída de dados no pgAdmin.

A estimativa de custo (cost=0.00..32.60 rows=2260 width=8) significa que o PostgreSQL espera que a consulta exija 32,60 unidades de computação para retornar os resultados.

O 0.00 valor é o custo pelo qual esse nó pode começar a trabalhar (nesse caso, o tempo de inicialização da consulta). O rows valor é o número estimado de linhas que a varredura sequencial retornará. O width valor é o tamanho estimado em bytes das linhas retornadas.

Como o exemplo mostra EXPLAIN com a ANALYZE opção, a consulta foi executada e as informações de tempo foram capturadas. O resultado (actual time=0.120..0.121 rows=1 loops=1) significa o seguinte:

  • A varredura sequencial foi executada uma vez (o loops valor).

  • A digitalização retornou uma linha.

  • O tempo real foi de 0,12 milissegundos.