Carregando o concurso…
Uma equipe de auditoria fiscal analisa o desempenho de um sistema de banco de dados PostgreSQL 14 que processa declarações de contribuintes. O sistema executa a seguinte consulta, que apresenta lentidão:
SELECT c.id_contribuinte, c.nome, SUM(d.valor) AS total_devido, RANK() OVER (PARTITION BY c.regiao ORDER BY SUM(d.valor) DESC) AS posicao_regional FROM contribuintes c JOIN declaracoes d ON c.id_contribuinte = d.id_contribuinte WHERE d.ano_exercicio = 2023 GROUP BY c.id_contribuinte, c.nome, c.regiao ORDER BY c.regiao, posicao_regional;
O plano de execução atual mostra um Seq Scan na tabela declaracoes (10 milhões de linhas) e um Hash Join com a tabela contribuintes (500 mil linhas). Existe um índice B-tree em declaracoes(ano_exercicio), mas o otimizador optou por não utilizá-lo. A equipe considera as seguintes ações:
declaracoes(ano_exercicio, id_contribuinte) incluindo a coluna valor (INCLUDE).RANK() por ROW_NUMBER(), pois esta última é mais eficiente por não tratar empates.WHERE d.ano_exercicio = 2023 e GROUP BY c.id_contribuinte, c.nome, c.regiao com HAVING SUM(d.valor) > 0.Considerando as boas práticas de otimização e o funcionamento do PostgreSQL, qual das afirmativas a seguir está CORRETA?
Selecione uma alternativa pra criar sua conta e salvar o progresso.