
02/12/2009, 09:36
|
 | 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) |