sql >> Base de Datos >  >> RDS >> Sqlserver

¿Puede un INNER JOIN ofrecer un mejor rendimiento que EXISTS?

En términos generales, INNER JOIN y EXISTS son cosas diferentes.

El primero devuelve duplicados y columnas de ambas tablas, el último devuelve un registro y, al ser un predicado, devuelve registros de una sola tabla.

Si realiza una unión interna en un UNIQUE columna, muestran el mismo rendimiento.

Si realiza una unión interna en un conjunto de registros con DISTINCT aplicado (para deshacerse de los duplicados), EXISTS suele ser más rápido.

IN y EXISTS Las cláusulas (con una correlación de unión igualitaria) generalmente emplean uno de los varios SEMI JOIN algoritmos que suelen ser más eficientes que un DISTINCT en una de las mesas.

Ver este artículo en mi blog:

  • EN vs. ÚNETE vs. EXISTE