Imagem de fundo

Determinado analista de sistema da Câmara Municipal está otimizando uma consulta SQL pa...

Determinado analista de sistema da Câmara Municipal está otimizando uma consulta SQL para gerar um relatório de solicitações processadas por departamento. A tabela Solicitações possui os seguintes campos:


• id_solicitacao (chave primária)

• id_departamento (chave estrangeira)

• data_solicitacao

• status ('pendente', 'em andamento', 'concluída')


A consulta a seguir foi implementada para contar o número de solicitações concluídas por departamento:


SELECT id_departamento, COUNT(*) AS total_concluidas

FROM Solicitações

WHERE status = 'concluída'

GROUP BY id_departamento;


A equipe identificou que a consulta está impactando o desempenho do banco de dados quando acessada simultaneamente por múltiplos usuários. Considerando o impacto causado por acessos concorrentes a uma consulta de leitura com agregação, qual das estratégias a seguir representa a solução mais eficaz para otimizar o desempenho e reduzir a carga sobre o banco de dados?


A

Criar uma indexação no campo status para acelerar a filtragem das solicitações concluídas.


B

Substituir a consulta por uma visão materializada, armazenando os resultados pré-calculados para reduzir a carga computacional da consulta.


C

Utilizar o nível de isolamento SERIALIZABLE, garantindo que cada transação leia os dados sem interferência de outras, mesmo que isso reduza a concorrência.


D

Implementar um bloqueio exclusivo (LOCK) na tabela Solicitações durante a execução da consulta para evitar inconsistências, impedindo leituras concorrentes.