Si los índices se usan correctamente, casi siempre es más eficiente para usar un JOIN. El énfasis se agrega porque la mejor eficiencia no siempre es igual al mejor rendimiento.
Sin embargo, en realidad no hay una respuesta única para todos; debe analizar una consulta usando EXPLAIN
para asegurarse de que los índices se estén utilizando, que no haya un uso innecesario de la tabla temporal, etc. En algunos casos , las condiciones conspiran para crear una consulta que simplemente no puede utilizar índices. En esos casos, podría ser más rápido para separar las consultas en partes de la manera que ha indicado.
Si encontrara dicho código en un proyecto existente, lo cuestionaría:verifique la consulta, piense en diferentes formas de realizar la consulta, asegúrese de que estas cosas se hayan considerado, construya un caso científico respaldado por hechos a favor o en contra de la práctica. . Asegúrese de que los desarrolladores originales hicieron su debida diligencia, ya que no usar un JOIN superficialmente apunta a una base de datos o un diseño de consulta deficientes. Sin embargo, al final, los resultados hablan en voz alta y si todas las optimizaciones y correcciones aún dan como resultado una unión más lenta que la que proporciona el uso de fragmentos de consulta, entonces prevalece la solución más rápida. Benchmark y actuar sobre los resultados del benchmark; no hay ningún caso en el diseño de software en el que deba cambiar un rendimiento deficiente por la adhesión a reglas arbitrarias sobre lo que debe o no debe hacer. El método de mejor rendimiento es el mejor método.