Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Diferencias entre INNER JOIN Y SUBCONSULTAS

Estas en el tema de Diferencias entre INNER JOIN Y SUBCONSULTAS en el foro de Bases de Datos General en Foros del Web. Hola, se que talvez es algo básico para ustedes, pero yo me estoy iniciando en el mundo de sql y aun no tengo bien marcada ...
  #1 (permalink)  
Antiguo 10/06/2011, 15:58
 
Fecha de Ingreso: febrero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 2
Exclamación Diferencias entre INNER JOIN Y SUBCONSULTAS

Hola, se que talvez es algo básico para ustedes, pero yo me estoy iniciando en el mundo de sql y aun no tengo bien marcada la diferencia entre ambas.

He oido decir que lo que hago con inner join tambien lo hago con subconsultas anidadas "select".

Necesito saber si son similares o iguales y si no es asi, cual es la diferencia.


Muchas Gracias
  #2 (permalink)  
Antiguo 10/06/2011, 21:34
Avatar de Perr0  
Fecha de Ingreso: mayo-2005
Ubicación: Santiago de Chile, Chile
Mensajes: 676
Antigüedad: 19 años
Puntos: 79
Respuesta: Diferencias entre INNER JOIN Y SUBCONSULTAS

hola ranchoteca,

de por si son muy similares, la diferencia es:

SUBCONSULTA: primero obtienes el resultado de la consulta y luego filtra el resultado final.

JOIN: primero filtra (en el caso de INNER va a realizar la intersección) y luego genera el resultado de la consulta.


Por mi parte veo mas ventajoso usar JOIN por motivos que en una consulta larga va tomar menos tiempo el resultado. Ademas de que me resulta mas fácil la sintaxis (en mi caso).

salu2
__________________
Numerador Mp3 en Access =)
http://www.mediafire.com/download/r9...pdw/mp3(2).zip
  #3 (permalink)  
Antiguo 11/06/2011, 06:59
Avatar de 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: Diferencias entre INNER JOIN Y SUBCONSULTAS

Me cuesta entender el origen de la duda, porque pese a lo que dice Perr0, se trata de cosas conceptualmente diferentes, y además no existe una real dicotomía entre ambas porque una está contenida en la otra, en determinados contextos.

Una subconsulta es en realidad una consulta que genera una tabla derivada (tabla resultado, en memoria o en buffer), la cual puede ser usada en diferentes contextos:

- Usarla para obtener un conjunto referido a un único campo o a varios para el WHERE.
- Para obtener un único valor dentro de las columnas del SELECT.
- Usarla como parte de un UNION.
- La puedes usar como tabla del FROM.

Como se pude apreciar, su uso no está restringido a un mismo caso, a diferencia del INNER JOIN.
El INNER JOIN es exclusivamente una operación algebraica entre tablas. No existe en otro contexto y sólo se usa para realizar un matching entre tablas basado en dominios.
Lo que hace el INNER JOIN es realizar una comparación rápida entre valores entre dos tablas (más de dos tablas implica también más de un INNER JOIN) a medida que las tablas van siendo recuperadas, tal que sólo se toman en cuenta aquellos registros de ambas tablas que cumplan con la relación indicada, sin importar ningún otro valor que exista en los otros campos.

La subconsulta, por su lado, es en realidad una consulta, y como tal debe producir una tabla resultado conforme las condiciones puestas. Pero la subconsulta como tabla derivada debe haber sido completamente ejecutada para poder ser usada en su contexto. Sin eso no opera, y dependerá de la optimización lograda en ella la utilidad de la misma; además, como toda consulta, está afectada por índices, condiciones de WHERE etc. Pero también como toda consulta, puede a su vez contener algún INNER JOIN... Entonces no se trata de operaciones comparables, son cosas complementarias.

¿Se entiende?

Simplificando:
No se trata de cosas que se puedan oponer o comparar. Se complementan y una está incluida en la otra.
La mayor o menor optimización lograda en una consulta no depende de si se usa una subconsulta o un INNER JOIN porque no son cosas excluyentes. En todo caso depende del contexto del uso: Puede ser muy eficiente usar una subconsulta para obtener una tabla derivada, que se usa en la consulta principal como tabla de un INNER JOIN..., por ejemplo, pero sólo será eficiente si y sólo si esa subconsulta implica una operación de alta selectividad (un SELECT que devuelva muy pocos registros en una tabla de muchos registros), sino le estás agregando overhead a la operación completa.

Espero que todo esto se haya entendido...

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 11/06/2011, 18:04
 
Fecha de Ingreso: febrero-2010
Mensajes: 152
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Diferencias entre INNER JOIN Y SUBCONSULTAS

Muchas gracias a ambos:D ya entendi je je

Etiquetas: diferencias, join, subconsultas, bases-de-datos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:04.