Ver Mensaje Individual
  #3 (permalink)  
Antiguo 06/09/2013, 10:06
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Consulta a dos tablas en un query se queda en un loop

El LEFT JOIN sólo debe usarse cuando la primera tabla (izquierda) es la de más alta selectividad, o bien sea la tabla que en la lógica de lo que se busca, sea la tabla básica.
Esto implica que si quieres los movimientos de productos incluyendo los que no se movieron, la tabla izquierda es Productos; pero si lo que quieres es cuándo hubo movimientos de productos que se vendieron, la tabla izquierda podría ser la de movimientos.
Es decir, depende de lo que deseas obtener.
En tu caso, habría que ver cuál de las dos tablas es la que tiene menor cantidad de registros, o cuál es la que determina la lógica del reporte a obtener, y ordenarlas en consecuencia. No te olvides que tanto en el LEFT JOIN como en el RIGHT JOIN el orden de los factores si altera el producto en SQL.

Por otro lado, debes tener en cuenta que si en la primer tabla los registros devueltos son muchos, el GROUP BY se vuelve un poco problemático en la performance. Hay que verificar si realmente es eficiente para tu caso, y si es posible aumentar las condiciones para reducir los registros devueltos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)