Olá…
Esses dias, analisando a estruturação de uma aplicação da qual participei do processo de desenvolvimento, surgiu uma dúvida…
Os BD’s mais amplamente utilizados fazem otimização de redundância de consultas? Algo do tipo:
SELECT Funcionários.Departamento, Supervisores.NomeSupevisor
FROM Funcionários INNER JOIN Supervisores
WHERE Funcionários.Departamento = Supervisores.Departamento AND
Funcionários.Departamento = Supervisores.Departamento;
Percebam que utilizo a cláusula where restringindo os resultados que satisfaçam determinados critérios. Todavia, os meus 2 critérios (ligados pelos operador AND) são, na verdade, o mesmo critério duplicado. Parece uma situação estúpida, mas na aplicação que vi, esta situação pode ocorrer, pois temos um sistema que gera buscas dinâmicas, em que um usuário sem atenção pode fazer algo assim.
De qualquer forma, eu queria saber se o BD faz um pré-processamento disso para detectar esse tipo de redundância, para finalidades de otimização, ou se, neste caso, ele executa cegamente a operação definida. Se for o segundo caso, imagino que ele verifica os registros que satisfaçam o primeiro critério, depois os que satisfaçam o segundo critério e, por fim, retorne os elementos comuns entre ambos os conjuntos. Essa busca pelo crit’rio específico seria redundante…