Que Query aplicar

29/12/2005 - 17:48 por JSR | Informe spam
Saludos a todo el grupo.

La consulta que tengo es la siguiente: Cual de los 3 querys presentados a
continuación sería el más eficiente?

SELECT * FROM T1
WHERE EXISTS(SELECT * FROM T2 WHERE T1.C1=T2.C1 AND T2.C2<>'X' AND
T2.C3<>'A')
AND T1.CX='A'
ORDER BY T1.CN

SELECT DISTINCT T1.* FROM T1 INNER JOIN T2 ON T1.C1=T2.C1
WHERE T2.C2<>'X' AND T2.C3<>'A' AND T1.CX='A'
ORDER BY T1.CN

SELECT * FROM T1
WHERE T1.C1 IN (SELECT T2.C1 FROM T2 WHERE T2.C2<>'X' AND T2.C3<>'A')
AND T1.CX='A'
ORDER BY T1.CN

El plan de ejecución que muestra es el mismo para cada uno.

Gracias y feliz año.
Juan
 

Leer las respuestas

#1 Maxi
29/12/2005 - 18:47 | Informe spam
Hola,si el plan de ejecucion es el mismo entonces los 3 son iguales. Yo de
todas maneras me guta mas usar la opcion 2 , hay casos donde el Exist o el
IN te pueden jugar una mala pasada en rendimiento


Salu2
Maxi [MVP SQL SERVER]
www.sqlgurus.org


"JSR" escribió en el mensaje
news:
Saludos a todo el grupo.

La consulta que tengo es la siguiente: Cual de los 3 querys presentados a
continuación sería el más eficiente?

SELECT * FROM T1
WHERE EXISTS(SELECT * FROM T2 WHERE T1.C1=T2.C1 AND T2.C2<>'X' AND
T2.C3<>'A')
AND T1.CX='A'
ORDER BY T1.CN

SELECT DISTINCT T1.* FROM T1 INNER JOIN T2 ON T1.C1=T2.C1
WHERE T2.C2<>'X' AND T2.C3<>'A' AND T1.CX='A'
ORDER BY T1.CN

SELECT * FROM T1
WHERE T1.C1 IN (SELECT T2.C1 FROM T2 WHERE T2.C2<>'X' AND T2.C3<>'A')
AND T1.CX='A'
ORDER BY T1.CN

El plan de ejecución que muestra es el mismo para cada uno.

Gracias y feliz año.
Juan

Preguntas similares