Tecnología

Inicio

Diferencias entre EXISTE Y EN en SQL

Diferencias entre EXISTE Y EN en SQL


Un desafío persistente en el uso de SQL es determinar el uso adecuado de la EXISTE Y EN operadores. Los dos operadores pueden producir los mismos resultados, pero no siempre hacerlo. Además, existe un debate considerable sobre la forma en que cada operador está optimizado para la velocidad. Los usuarios deben entender los diferentes atributos de cada operador y probar ambos para determinar la función apropiada.

en el operador

El operador IN devuelve una fila si un valor tabla.campo condicionada DONDE coincide con una lista de valores en. EN se utiliza normalmente como parte de una consulta principal o en conjunción con una subconsulta.

Ejemplo 1: DONDE Tabla.Campo en ( 'a', 'b', 'c')

Ejemplo 2: DONDE Tabla.Campo en (estaciones de retorno de Subconsulta de valores)

operador EXISTS

El operador EXISTS vuelve todos los principales filas de la consulta si la subconsulta contiene ninguna fila.

Existe sólo se utiliza en conjunción con una subconsulta. Filas devueltas se determinan mediante la filtración a nivel de consulta principal. Ejemplo: DONDE EXISTE (estaciones de retorno de Subconsulta de valores)

Diferencia

IN no puede evaluar los valores NULL, por lo que las filas son siempre falsas, y no regresó.

Existe puede evaluar los valores NULL, por lo que las filas se pueden devolver.

similitudes

Existe y en el soporte de correlacionadas y subconsultas no correlacionadas, y ambos pueden producir principales resultados similares. Cuando se correlacionó, existe y en el partido un campo de consulta principal a un campo sub consulta (por ejemplo: main.id = subquery.id). La subconsulta evalúa fila por fila, para cada coincidencia encontrada. En este caso, IN y EXISTS volverán las mismas filas en función de coincidencias de identificación similares. Cuando no correlacionados, existe y sus IN proceso de subconsultas en primer lugar, a continuación, se ajustan los resultados a la consulta principal.

Rendimiento del EXISTE e IN

El rendimiento se determina por el optimizador de base de datos y el plan de ejecución se emplea para el código que se ejecuta. Por existe y EN, el optimizador puede elegir diferentes caminos. En Oracle, esto es existe, no evitando un anti-join, y por lo general más rápido que probar NO EN. Al final, se requiere algo de ensayo y error para comparar el camino más rápido dependiendo de la base de datos y es la versión que se utiliza. Asegúrese de utilizar el operador asegura que los resultados correctos en primer lugar, a continuación, si todo es lo mismo, trata de sustituir existe y para ver realmente que es más rápido.