2012-09-11 23 views

Respuesta

16

En primer lugar, una subconsulta correlacionada realmente es un tipo de unión. No hay una regla de oro acerca de cuál produce el mejor plan de ejecución. Si le interesa el rendimiento, debe probar los diferentes formularios para ver qué funciona mejor. O, al menos, mira los planes de exención para tomar esa decisión.

En general, tiendo a evitar las subconsultas correlacionadas por un par de razones. En primer lugar, casi siempre se pueden escribir sin la correlación. En segundo lugar, muchos motores de consulta los convierten en combinaciones de bucles anidados (aunque usan índices), y otras estrategias de combinación podrían ser mejores. En tales casos, las subconsultas correlacionadas dificultan la paralelización de la consulta. En tercer lugar, las subconsultas correlacionadas son generalmente en las cláusulas SELECT o WHERE. Me gusta que todas mis tablas estén en la cláusula FROM.

En MySQL, sin embargo, las subconsultas correlacionadas suelen ser la más manera eficiente de realizar una consulta. Esto es especialmente cierto cuando se utiliza una subconsulta en una cláusula IN. Entonces, no hay una regla de oro.

Cuestiones relacionadas