sql >> Base de Datos >  >> RDS >> Oracle

¿Es una unión anti-unión más eficiente que una unión externa izquierda?

Cuando usa "no existe" o "no está en" en su consulta SQL, permite que Oracle elija fusionar rutas de acceso anti-unión o hash anti-unión.

Explicación rápida

Por ejemplo, dada la unión entre la tabla A y B (desde A, unión B en A.x =B.x), Oracle obtendrá todos los datos relevantes de la tabla A e intentará unirlos con las filas correspondientes en la tabla B, por lo que depende estrictamente de la selectividad de la tabla. Un predicado.

Al utilizar la optimización anti-unión, Oracle puede elegir la tabla con mayor selectividad y combinarla con la otra, lo que puede resultar en un código mucho más rápido.

No puede hacer eso con una combinación o subconsulta regular, porque no puede asumir que una coincidencia entre las tablas A y B es suficiente para devolver esa fila.

Consejos relacionados: HASH_AJ, MERGE_AJ.

Más:

Esto parece un artículo agradable y detallado sobre el tema.

Aquí es otro artículo más decente.