Bases de Datos - In versus exists

 
Vista:

In versus exists

Publicado por Nauj (10 intervenciones) el 27/10/2001 13:19:43
Hola,
Tengo una select que quiero reducir en tiempo. La tengo hecha utilizando
el operador in y me han aconsejado rehacer la sql empleando exists
en lugar de in. Se supone que esto debería reducir el tiempo, pero
en mi caso lo aumenta, quiero saber si estoy utilizando correctamente
el operador exists o se puede escribir la select de un modo que sea más
eficiente. Si alguien me puede ayudar o dar un consejillo se
lo agradezco. La tabla2 tiene como 3 veces más registros que la tabla1
y todos los campos de búsqueda son clave primaria en tabla1.

IN:
select * from tabla1 where campo1 = '0209' and campo2 = '212'
and campo3 = '000'
and campo4||campo5||campo6 in
(select distinct campo4||campo5||campo6
from tabla2 where campo1 = '0209' and campo2 = '212'
and campo3 = '000')

EXISTS:
select * from tabla1 a where a.campo1 = '0209' and a.campo2 = '212'
and a.campo3 = '000'
and exists
(select *
from tabla2 b where b.campo1 = '0209' and b.campo2 = '212'
and b.campo3 = '000'
and b.campo4 = a.campo4 and b.campo5 = a.campo5
and b.campo6 = a.campo6)


Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:In versus exists

Publicado por Juan Mellado (3 intervenciones) el 28/10/2001 11:59:13
No acabo muy bien de entender la SELECT, pero... ¿No sería equivalente a la siguiente, sin IN ni EXISTS?:

SELECT A.*
FROM tabla1 A, tabla2 B
WHERE A.campo1 = '0209'
AND A.campo2 = '212'
AND A.campo3 = '000'
AND A.campo1 = B.campo1
AND A.campo2 = B.campo2
AND A.campo3 = B.campo3
AND A.campo4 = B.campo4
AND A.campo5 = B.campo5
AND A.campo6 = B.campo6;

Espero haberte ayudado.
Saludos, Juan
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar