Compreender a declaração EXPLICAR

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 nocional de uma consulta.

A sintaxe para EXPLAIN é:

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

Os parâmetros opcionais são:

  • ANALISAR
  • VERBOSO
  • CUSTOS
  • BUFFERS
  • FORMATO

Por exemplo:

EXPLAIN ANALYZE SELECT * FROM category ORDER BY cat_id;

Esta consulta simples devolve as seguintes informações:

Captura de ecrã a mostrar o Plano de Consulta.

ANALISAR

Esta 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 impedir 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;

VERBOSO

Exibe informações adicionais, incluindo:

  • A lista de colunas de saída para cada nó na árvore de plano
  • A tabela qualificada pelo esquema e os nomes das funções
  • os nomes das variáveis em expressões juntamente com o alias da tabela
  • o nome de cada gatilho para o qual as estatísticas são exibidas

CUSTOS

Inclui o custo de arranque estimado e o custo total, mais o número estimado de linhas e a largura estimada de cada linha.

BUFFERS

Os buffers só podem ser usados com a opção ANALYZE. O PostgreSQL usa um cache LRU (Least Recently Used) para armazenar dados usados com freqüência na memória. Os buffers exibem quanto dos dados vem de um cache e quanto é recuperado do disco. Exibe o número de acessos, leituras e gravações de blocos compartilhados, locais e temporários. Os dados fornecidos pelo BUFFERS podem ajudar a entender as 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 para os programas usarem. TEXT é o padrão.