15 Performance - rodrigomourapinto/aprenda_postgresql GitHub Wiki
Performance
O primeiro passo para melhorar uma consulta não é adicionar índice. Primeiro descubra onde está o custo.
EXPLAIN
EXPLAIN
SELECT *
FROM pedidos
WHERE cliente_id = 10;
Para medir a execução:
EXPLAIN (ANALYZE, BUFFERS)
SELECT *
FROM pedidos
WHERE cliente_id = 10;
Índice simples
CREATE INDEX idx_pedidos_cliente_id
ON pedidos (cliente_id);
Índice composto
CREATE INDEX idx_pedidos_cliente_data
ON pedidos (cliente_id, data_pedido DESC);
O que observar
- estimativa de linhas versus linhas reais
Seq Scanem tabelas grandes- leituras de buffer
- ordenações caras
- filtros aplicados tarde demais
- joins com cardinalidade inesperada
Índice também tem custo: ocupa espaço, aumenta o trabalho de escrita e precisa ser escolhido de acordo com os padrões reais de consulta.