Ver Mensaje Individual
  #12 (permalink)  
Antiguo 02/12/2009, 09:36
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: segundo query no responde

Cuando el o los campos de relación se especifican en el JOIN (INNER JOIN en este caso), el DBMS va realizando la selección en la medida que va leyendo las tablas, descartando lo que de entrada no cumple con la relación, y luego pasa a considerar lo que figura en el WHERE. En cambio, si la relación está establecida en el WHERE primero lee todos los registros de ambas tablas, para luego verificar el WHERE.
Esta segunda versión tiene dos problemas: Por un lado hace un producto cartesiano (M x N), con lo que la tabla en memoria puede ser inmensa; y por otro lado, lee muchísima información que finalmente no va a usar (datos basura), pero que ocupa espacio en el buffer.

Usar INNER JOIN ... ON ... es mucho más eficiente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)