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