Oi, Lucas!
Na maioria das vezes, usar WHERE
ou INNER JOIN
gera o mesmo desempenho, isso se deve a algo chamado plano de consulta, que é um código gerado "por baixo dos panos" para executar uma consulta. Ele pega a consulta e cria uma maneira otimizada de encontrar os dados — contudo, com relação a estas duas cláusulas, temos o mesmo resultado.
Lucas, ainda que sejam semelhantes em desempenho, é importante enfatizar que entre as cláusulas WHERE
e INNER JOIN
existem sim diferenças, sobretudo quando falamos de suas finalidades e facilidades de interpretação.
Ao passo que nesta atividade foi possível utilizar ambas, isso nem sempre será viável, uma vez que tais comandos possuem objetivos diferentes:
- O
WHERE
permite filtrar determinados registros de uma consulta; - O
INNER JOIN
(e de maneira geral todos os tipos de JOIN
) realizam a junção de tabelas.
O WHERE
também consegue realizar junções, mas o JOIN
foi criado justamente para isso. Logo, é mais interessante deixar o WHERE
para outras atividades e, caso seja necessário unir tabelas, fazer uso das múltiplas variedades do JOIN
.
Essa perspectiva esta diretamente atrelada à facilidade de interpretação. Em um primeiro momento (e dependendo da complexidade do SELECT
), pode ser difícil entender o processo de junção com WHERE
. Por outro lado, a sintaxe associada ao JOIN
torna isso mais simples, observe o trecho abaixo:
FROM ITENS_NOTAS_FISCAIS i
INNER JOIN tabela_de_produtos p
ON i.codigo_do_produto = p.codigo_do_produto
A partir dele, conseguimos fazer uma leitura direta, compreendendo que as tabelas que serão unidas são ITENS_NOTAS_FISCAIS
e TABELA_DE_PRODUTOS
, e o critério de junção será o campo codigo_do_produto
de ambas as tabelas.
Lucas, espero ter ajudado! Estarei aqui para conversamos caso surjam outras dúvidas.
Até!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!