Ler um EXPLAIN ANALYZE
Pergunta
O que você procura primeiro ao ler a saída de `EXPLAIN ANALYZE` de uma query lenta no PostgreSQL?
Resposta esperada
Comparar as linhas ESTIMADAS (`rows=`) com as REAIS (`actual rows=`): uma diferença grande indica estatísticas desatualizadas (rodar `ANALYZE`) e explica planos ruins. Procurar `Seq Scan` em tabela grande onde deveria haver `Index Scan` — falta índice, ou o índice não é usável (função aplicada na coluna, tipo incompatível, `LIKE '%x'`). Olhar o nó mais caro pelo `actual time` acumulado e por loops (`loops=` alto num nó = ele roda N vezes, sinal de nested loop ruim). `Rows Removed by Filter` alto = a query lê muito e joga fora, candidato a índice mais seletivo ou parcial. Buffers (`EXPLAIN (ANALYZE, BUFFERS)`) mostram se está lendo do cache ou do disco. E o total no fim: `Planning Time` vs `Execution Time`.
Por que perguntam isso
Pergunta pleno/sênior de Postgres. Sinais de domínio: 'estimado vs real', `loops=`, `Rows Removed by Filter`, `BUFFERS`.