~ / blog / Postgres: índices, EXPLAIN e consultas l
27 set 2026dados10 min de leitura

Postgres: índices, EXPLAIN e consultas lentas

Leia EXPLAIN ANALYZE, escolha índices (B-tree, parcial, composto) e evite sequential scans desnecessários em produção.

PostgresSQLperformance

1. Sintoma de query lenta

Dashboard lento, CPU alta no Postgres, locks. Antes de “subir a máquina”, meça a query.

EXPLAIN (ANALYZE, BUFFERS)
SELECT * FROM pedidos
WHERE cliente_id = 42 AND status = 'aberto'
ORDER BY created_at DESC
LIMIT 20;

2. O que olhar no EXPLAIN

  • Seq Scan em tabela grande — candidato a índice
  • Index Scan / Bitmap — bom sinal se seletivo
  • Rows estimado vs real — estatísticas desatualizadas?
  • Buffers — muita leitura de disco

3. Índices úteis

-- composto na ordem do filtro + ordenação
CREATE INDEX ON pedidos (cliente_id, status, created_at DESC);

-- parcial
CREATE INDEX ON pedidos (created_at)
WHERE status = 'aberto';
DICA Índice demais atrasa writes. Crie com base em query real, não em “talvez um dia”.

4. Armadilhas

  • Função na coluna impede uso de índice: WHERE LOWER(email) = ... → índice em expressão ou coluna normalizada
  • SELECT * carrega colunas desnecessárias
  • OFFSET alto em paginação — prefira keyset pagination

5. Checklist

  • ANALYZE após cargas grandes
  • Índices alinhados a filtros reais
  • Monitorar pg_stat_statements
  • Vacuum/autovacuum saudável

Quer aplicar isso ao seu contexto?

Se esse problema existe na sua operação, podemos analisar o cenário em um diagnóstico gratuito de 30 minutos.

solicitar diagnóstico gratuito →