Entender a instrução EXPLAIN

Concluído

Use a instrução EXPLAIN para exibir o plano de execução da consulta. EXPLAIN pode ser usado com qualquer instrução SELECT, INSERT, UPDATE, DELETE, VALUES, EXECUTE, DECLARE ou CREATE TABLE AS.

EXPLAIN exibe o plano de execução da consulta, permitindo que você entenda como o PostgreSQL: executa uma instrução, se os índices são usados, como as tabelas são unidas e o custo de noção de uma consulta.

A sintaxe de EXPLAIN é:

EXPLAIN [ (parameter [, ...] ) ] statement

Os parâmetros opcionais são:

  • ANALISAR
  • DETALHADO
  • CUSTOS
  • BUFFERS
  • FORMATO

Por exemplo:

EXPLAIN ANALYZE SELECT * FROM category ORDER BY cat_id;

Esta consulta simples retorna as seguintes informações:

Captura de tela mostrando o Plano de Consulta.

ANALISAR

Essa opção executa a instrução e retorna o plano de consulta. A saída da instrução é descartada, mas a instrução ainda é executada. Você pode combinar as instruções ROLLBACK e EXPLAIN ANALYZE para evitar que as alterações sejam aplicadas com uma consulta que faça alterações no banco de dados, como INSERT, UPDATE ou DELETE. Por exemplo:

BEGIN;

> EXPLAIN ANALYZE INSERT INTO Animal 
> (ani_id, name, weight_kg, cat_id, enc_id) 
> VALUES (28, 'Robin Robin', 0.5, 1, 2);

ROLLBACK;

DETALHADO

Exibe informações adicionais, incluindo:

  • a lista de colunas de saída para cada nó na árvore de planos
  • os nomes de tabela e função qualificados para esquema
  • os nomes de variáveis em expressões junto com o alias de tabela
  • o nome de cada gatilho para o qual as estatísticas são exibidas

CUSTOS

Inclui o custo de inicialização estimado e o custo total, além do número estimado de linhas e da largura estimada de cada linha.

BUFFERS

Os buffers só podem ser usados com a opção ANALYZE. O PostgreSQL usa um cache LRU (menos usado recentemente) para armazenar dados usados com frequência na memória. Os buffers exibem a quantidade de dados provenientes de um cache e quanto é recuperado do disco. Exibe o número de ocorrências, leituras e gravações de blocos compartilhados, locais e temporários. Os dados fornecidos pelo BUFFERS podem ajudar a entender partes intensivas de E/S de uma consulta.

FORMATO

Define o formato de saída. XML, JSON ou YAML contêm as mesmas informações que TEXT, mas em um formato mais fácil de usar para programas. TEXT é o padrão.