Red de conocimiento del abogados - Preguntas y respuestas jurídicas - La diferencia entre el uso IN y EXISTS en SQL

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

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

donde t1.c1 no está (seleccione t2 .c1 de la tabla2 t2)