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

AND y OR en los INNER?

Estas en el tema de AND y OR en los INNER? en el foro de SQL Server en Foros del Web. Tal vez mi pregunta es tonta, pero apenas comienzo a utilizar lo que es el INNER JOIN, necesitaba mejorar el rendimiento de unos querys con ...
  #1 (permalink)  
Antiguo 07/05/2009, 14:42
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Pregunta AND y OR en los INNER?

Tal vez mi pregunta es tonta, pero apenas comienzo a utilizar lo que es el INNER JOIN, necesitaba mejorar el rendimiento de unos querys con una estructura similar a esto por dar un ejemplo:

Select * from tabla_A a, tabla_B b where ...
AND (
Exist ( Select 1 from tabla_B x, tabla_C y where ... )
AND-- duda
Exist ( Select 1 from tabla_B x, tabla_C y where ... )
)

Bien, en lugar de eso hice este otro y me arroja los mismos resultados:

Select * from tabla_A a
INNER JOIN tabla_B b ON ...
INNER JOIN tabla_C c ON ...
INNER JOIN tabla_B bb ON ...
INNER JOIN tabla_C cc ON ...
where a.campo1='X'

Como dije estos dos querys me devuelven los mismos datos, pero mi duda seria, notaran que en la primera consulta indique un comentario ( -- duda ) en el operado de AND, si en lugar de ese operador fuera un OR que duferencia habria en el segundo query que elabore?

Si alguien me puede ayudar con sus comentarios se los agradecere mucho!
__________________
Wow! No se que decir...
  #2 (permalink)  
Antiguo 07/05/2009, 15:55
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 9 meses
Puntos: 39
Respuesta: AND y OR en los INNER?

Estas confundiendo el uso de los operadores.
La palabra reservada EXISTS se usa para validar la existencia de un registro en una subconsulta.
Los JOIN se usan para relacionar conjunto de registros segun un criterio especifico mayormente por las llaves primarias de las tablas.
En tu caso EXISTS se realiza más rapido que el JOIN.
Si usas OR tendrás otro resultado, pero segun entiendo, tendrias que agrupar los dos EXISTS con parentesis.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 07/05/2009, 17:03
 
Fecha de Ingreso: septiembre-2005
Mensajes: 1.289
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: AND y OR en los INNER?

mmm en el ejemplo con el exists q puse si los agrupe, de hecho antes no lo estaban y mis consultas eran mas lentas, pero sin embargo cuando uso los EXIST utilizando ademas, creo llamado, Producto cartesiano mis consultas son muy lentas, pero con los JOIN's son mucho mas rapidas, segun entiendo los JOIN te empalman distintas tablas lo cual me hace pensar q la busqueda es mas rapida, pero no tengo bien en claro como con los JOIN's manejaria esos SUBQUERYS con EXISTS, bueno, en el caso de que sea mas de uno dependiendo la condición, tal vez me estoy liando mas de la cuenta :S tambien tengo la duda de como se usan el LEFT JOIN y RIGHT JOIN en realidad, si dije algo raro o errorneo corrijanmelo de favor!
__________________
Wow! No se que decir...
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 22:41.