“Conocimientos Programación>Lenguajes De Programación

Diferencias entre EXISTS y IN en SQL

2014/8/14
Un desafío persistente en el uso de SQL consiste en determinar el uso adecuado de los EXISTS e IN . Los dos operadores pueden producir los mismos resultados, pero no siempre lo haga. También , hay un debate considerable sobre cómo está optimizado para la velocidad de cada operador . Los usuarios deben entender los diferentes atributos de cada operador y probar los dos para determinar la función adecuada . EN Operador

el operador in devuelve una fila si un valor DONDE tabla.campo acondicionado, coincide con una lista de en valores. EN se utiliza normalmente como parte de una consulta principal o junto con una subconsulta

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

Ejemplo 2 : ¿DÓNDE Tabla.Campo en ( el regreso de subconsulta conjunto de valores )
EXISTE operador

el operador EXISTS devuelve todas las principales líneas de consulta si la subconsulta contiene ninguna fila.
EXISTE

sólo se utiliza en conjunción con una subconsulta . Filas devueltas se determinan mediante el filtrado a nivel de consulta principal . Ejemplo: Cuando exista ( el regreso de subconsulta conjunto de valores )
Diferencia

no puede evaluar NULL , por lo que las filas son siempre falsas , y no regresaron .
EXISTE

puede evaluar NULL , por lo que las filas se pueden devolver .
Similitudes

EXISTE y en ambos apoyo subconsultas correlacionadas y no correlacionadas , y ambos pueden producir principales resultados similares . Al correlacionar las que existe y en el partido de un campo principal de consultas a un campo subconsulta (ex : main.id = subquery.id ) . La subconsulta se evalúa fila por fila , para cada coincidencia encontrada . En este caso, IN y EXISTS devolverá las mismas filas en función de los partidos Identificación similares. Cuando no correlacionados , existe y EN proceso de sus subconsultas primero , y luego los resultados coinciden con la consulta principal .
Rendimiento del EXISTE Y EN

rendimiento se determina por la base de datos optimizador y el plan de ejecución se emplea para el código que se ejecuta . Para EXISTS e IN , el optimizador puede elegir diferentes caminos. En Oracle , esto es, NO EXISTE evitar un anti -join , y por lo general demostrando rápido que NO IN. Al final, se requiere un poco de ensayo y error para referencia el camino más rápido dependiendo de la base de datos y su versión en uso. Asegúrese de utilizar el operador que garantiza los resultados correctos , luego si todo es lo mismo, intentar EXISTS sustitución y para ver realmente lo que es más rápido .

Lenguajes De Programación
Cómo convertir una cadena GUID
Cómo devolver un errorlevel en VBS
¿Qué es una expresión de Etiquetado
Cómo crear un mensaje de varias líneas en Vb.Net
Cómo corregir un error de sintaxis
Cómo crear un Makefile
Cómo hacer que las aplicaciones iPSP
Operando falta después de un Operador
Conocimientos Informáticos © http://www.ordenador.online