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

Preguntas similare

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

Respuesta Responder a este mensaje
#2 Wilson R. Rico Camargo
29/12/2005 - 19:52 | Informe spam
El segundo ya que es la forma directa de hacer las cosas, yo no trabajo con
la instrccion Inner Join porque me parece mas claro trabajar todo wn el
where para una mayor compresnion en la lectura de una sentencia pero como
esta planteado es la forma.
Cordialmente,


Wilson R. Rico Camargo
BBVA Seguros
Bogotá - Colombia

(Oficina (571) 2191100 Ext. 1140
Móvil 300-2076572: Mensajes instantáneos
Visite www.bbvaseguros.com.co


"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

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida