Uma auditora fiscal da SEFAZ-Nacional precisa analisar o desempenho de consultas SQL em um banco de dados PostgreSQL 14 que armazena transações tributárias. Ela se depara com a seguinte consulta, executada repetidamente com diferentes valores de parâmetros:
SELECT contribuinte_id, SUM(valor) AS total FROM transacoes WHERE data_transacao BETWEEN $1 AND $2 AND status = 'CONFIRMADA' GROUP BY contribuinte_id HAVING SUM(valor) > 10000 ORDER BY total DESC LIMIT 100;
O plano de execução dessa consulta, obtido via EXPLAIN (ANALYZE, BUFFERS), mostra um Seq Scan na tabela transacoes, seguido de HashAggregate e Sort. A tabela possui 50 milhões de linhas, um índice B-tree em data_transacao e outro em contribuinte_id. O tempo médio de execução é de 12 segundos. A auditora deseja reduzir esse tempo para menos de 2 segundos, mantendo a mesma semântica da consulta.
Considerando os conceitos de otimização de consultas, funções de janela e planos de execução, qual das alternativas a seguir apresenta uma solução tecnicamente correta e que poderia efetivamente melhorar o desempenho da consulta?
Selecione uma alternativa pra criar sua conta e salvar o progresso.