La diferencia entre el uso IN y EXISTS en SQL
1. EXISTS no siempre es más rápido que IN. Si debe elegir IN o EXISTS, puede consultar el siguiente análisis:
1. de t2)
Equivalente a
seleccionar *
de t1, (seleccionar y distinta de t2 ) t2
donde t1.x = t2. y;
2. seleccione * de t1 donde exista ( seleccione nulo de t2 donde y = x )
Equivalente a
para x en ( seleccione * de t1)
bucle
si (existe (seleccione nulo de t2 donde y = x.x)
entonces
SALIDA DEL RECORD p>
end if
end loop
Si hay muchos registros en t2 y relativamente pocos registros en t1, se recomienda utilizar el segundo método de escritura; por el contrario, si hay muchos registros en t1 pero hay relativamente pocos registros en t2, se recomienda utilizar el primer método de escritura.
En otros casos, es necesario analizar detenidamente antes de decidir si elija EN o EXISTE
2 No es equivalente a NO EXISTE
Por ejemplo, en las dos oraciones siguientes, los registros devueltos por los dos son iguales solo cuando t1.c1 no es NULL. Todos usan NOT EXISTS para reemplazar NOT. Esto puede ignorarse cuando IN
selecciona t1.*
de la tabla1 t1
. donde no existe
(seleccione t2. c1 de la tabla2 t2 donde t2.c1 = t1.c1)
seleccione t1.*
de la tabla1 t1 p>
donde t1.c1 no está (seleccione t2 .c1 de la tabla2 t2)