Compreender a declaração EXPLICAR
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:
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.