Ver Mensaje Individual
  #2 (permalink)  
Antiguo 23/10/2010, 06:11
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: Duda Select.. Where vs Inner Join

Son preguntas de manual. En cualquier manual de bases de datos encontrarás las respuestas.
Sinteticamente:
Cita:
De que manera realiza la consulta el Inner Join para que pueda mostrar la información inmediatamente.
INNER JOIN realiza una junta natural por matching de claves, devolviendo sólo los registros que coincidan como se indica en el ON. Esta seleccción (que tiene varios algoritmos diferentes) descarta en la misma medida que va leyendo los registros de la segunda tabla.
Cita:
Porque necesito usar Distinct en el query de Inner Join.
Porque en una relación N:N o 1:N, el mismo registro de A se relaciona con má de uno de B y por tanto si quieres una lista simplificada debes eliminar las duplicidades.
Cita:
Y la última seria, en que casos se recomienda realmente usar Join vs un simple Select Where.
JOIN. los DBMS trabajan en modo estadístico. Dos ejecuciones de la misma sentencia en dos momentos diferentes de tiempo pueden usar algoritmos distintos para obtener el resultado por los diferentes análisis que los parsers determinen.
El problema es que el JOIN es optimizable epor los procedimientos internos de los DBMS para determinar el mejor algorimo, pero el WHERE no.
El WHERE se usa tal y como existe, lo que puede hacer que el DBMS lea completamente las dos tablas antes de aplicar los filtros del WHERE, sin realizar filtrados durante la lectura. En consecuencia, como el JOIN si es optimizable, usar el WHERE para determinar las relaciones es ineficiente. Tiende a permitir productos cartesianos, los que implican inmenso desperdicio de memoria y procesador.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)