sql >> Base de Datos >  >> RDS >> Mysql

MYSQL - Diferencia entre IN y EXIST

EXISTE

EXISTS es literalmente para verificar la existencia de criterios específicos. En el estándar SQL actual, le permitirá especificar más de un criterio de comparación, es decir, si desea saber cuándo coinciden col_a y col_b, lo que lo hace un poco más fuerte que la cláusula IN. MySQL IN admite tuplas, pero la sintaxis no es portátil, por lo que EXISTS es una mejor opción tanto para la legibilidad como para la portabilidad.

La otra cosa a tener en cuenta con EXISTS es cómo funciona:EXISTS devuelve un valor booleano y devolverá un valor booleano en la primera coincidencia. Entonces, si se trata de duplicados/múltiplos, EXISTS será más rápido de ejecutar que IN o JOIN, según los datos y las necesidades.

EN

IN es azúcar sintáctico para cláusulas OR. Si bien es muy complaciente, hay problemas al tratar con muchos valores para esa comparación (al norte de 1000).

NO

El operador NOT simplemente invierte la lógica.

Subconsultas frente a JOIN

El mantra "siempre use uniones" es defectuoso, porque JOIN corre el riesgo de inflar el conjunto de resultados si hay más de un registro secundario contra un padre. Sí, puede usar DISTINCT o GROUP BY para lidiar con esto, pero es muy probable que esto genere el beneficio de rendimiento de usar un JOIN discutible. Conozca sus datos y lo que quiere para un conjunto de resultados:estos son clave para escribir SQL que funcione bien.

Para reiterar saber cuándo y por qué saber qué usar:LEFT JOIN IS NULL es la lista de exclusión más rápida en MySQL si las columnas comparadas NO aceptan valores NULL , de lo contrario, NOT IN/NO EXISTS son mejores opciones.

Referencia: