Sobes.tech
Junior — Middle

Por que motivo a condição WHERE é processada antes da operação JOIN na consulta SQL?

sobes.tech IA

Resposta da IA

Na SQL, a ordem lógica de processamento de uma consulta é: primeiro executam-se as operações FROM e JOIN, depois WHERE, GROUP BY, HAVING e SELECT. No entanto, do ponto de vista da otimização, o SGBD pode aplicar a filtragem (condição WHERE) o mais cedo possível para reduzir o volume de dados envolvidos no JOIN.

Ou seja, embora sintaticamente o JOIN venha antes do WHERE, o otimizador de consultas frequentemente aplica o filtro WHERE antes de realizar o JOIN, para diminuir o número de linhas que precisam ser combinadas. Isso aumenta a performance, pois menos dados são processados na fase de junção das tabelas.

Exemplo:

SELECT * FROM orders o
JOIN customers c ON o.customer_id = c.id
WHERE o.status = 'completed'

O otimizador pode primeiro filtrar a tabela orders pelo status 'completed', e depois realizar o JOIN com customers, o que é mais eficiente do que unir todas as ordens primeiro e depois filtrar.