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 INSERT
UPDATE
, 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, como
Seq Scan
, ouIndex Scan
Nested 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.
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.