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

Oracle:eliminación de abajo hacia arriba

Como está interesado en el algoritmo, su pregunta parece reducirse a la diferencia entre IN y EXISTS como sus dos ejemplos son iguales excepto para el IN cambiando a un EXISTS en la eliminación del CHILD mesa.

Se ha escrito mucho sobre esta diferencia a lo largo de los años, pero en esencia IN se usa generalmente cuando el número de comparadores es pequeño mientras que EXISTS es más eficiente para las subconsultas que devuelven una mayor cantidad de comparadores (especialmente si esos valores contienen una gran cantidad de duplicados).

IN tiene que evaluar cada comparador devuelto mientras EXISTS está satisfecho cuando encuentra la primera coincidencia.

Hay excepciones a esto y si las busca en Google, las encontrará, pero en general esto parece ser cierto.

Tom Kyte (VP de Oracle) tiene una muy buena respuesta con explicaciones aquí:http://asktom.oracle.com/pls/asktom/f?p=100:11:2148775836129778::::P11_QUESTION_ID:953229842074

TechRepublic también tiene una buena explicación aquí:http://www.techrepublic.com/article/oracle-tip-understand-the-difference- between-in-and-exists-in-subqueries/5297080

Espero que esto ayude...