Se os índices forem usados corretamente, quase sempre será mais eficiente para usar um JOIN. A ênfase é adicionada porque a melhor eficiência nem sempre é igual ao melhor desempenho.
Não há realmente uma resposta de tamanho único, no entanto; você deve analisar uma consulta usando
EXPLAIN
para garantir que os índices estejam realmente sendo usados, que não haja uso desnecessário de tabelas temporárias, etc. Em alguns casos , as condições conspiram para criar uma consulta que não pode usar índices. Nesses casos, pode seja mais rápido para separar as consultas em partes da forma que você indicou. Se eu encontrasse esse código em um projeto existente, eu o questionaria:verifique a consulta, pense em maneiras diferentes de realizar a consulta, certifique-se de que essas coisas foram consideradas, construa um caso científico, baseado em fatos, a favor ou contra a prática . Certifique-se de que os desenvolvedores originais fizeram a devida diligência, pois não usar um JOIN superficialmente aponta para um banco de dados ou design de consulta ruim. No final, porém, os resultados falam alto e, se todas as otimizações e correções ainda resultarem em uma junção mais lenta do que o uso de fragmentos de consulta, a solução mais rápida prevalecerá. Benchmark e agir sobre os resultados do benchmark; não há nenhum caso no design de software em que você deva trocar o desempenho ruim pela adesão a regras arbitrárias sobre o que você deve ou não fazer. O método de melhor desempenho é o melhor método.