Ver Mensaje Individual
  #7 (permalink)  
Antiguo 24/10/2009, 13:42
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: 17 años, 3 meses
Puntos: 2658
Respuesta: Ayuda, contando "comentarios"

Cita:
no entiendo la diferencia entre ponerlo como una subconsulta a ponerlo como lo tenía yo...
En el modo en que tu lo hacías, el pimer INNER JOIN tomaba todos los registros coincidentes de la tabla2, incluidos aquellos en que el tabla2.campo = "valor" no se cumplía, antes de eliminarlos. Como esto podía implicar muchos muchos registros, perdía tiempo inútilmente leyendo información que luego no iba a usar.
Al poner ese primer filtro como subconsulta, se eliminan de entrada todos aquellos registros que seguro no vas a usar, y se hace la selección fina sobre una tabla mucho más reducida. Esa tarea es inmensamente rápida.
En MySQL, LEFT OUTER JOIN es sinónimo de LEFT JOIN, y te devuelve todos los registros de la tabla izquierda del FROM, no hace el mismo filtrado que MSSQL Server u Oracle. Tenlo en cuenta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)