Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle :suppression ascendante

Comme vous êtes intéressé par l'algorithme, votre question semble se résumer à la différence entre IN et EXISTS comme vos deux exemples sont les mêmes sauf pour le IN changer en un EXISTS dans la suppression de l'CHILD tableau.

Il y a eu beaucoup d'écrits sur cette différence au fil des ans, mais essentiellement IN est généralement utilisé là où le nombre de comparateurs est petit alors que EXISTS est plus efficace pour les sous-requêtes renvoyant un plus grand nombre de comparateurs (surtout si ces valeurs contiennent un grand nombre de doublons).

IN doit évaluer chaque comparateur renvoyé alors que EXISTS est satisfait lorsqu'il rencontre la première correspondance.

Il y a des exceptions à cela et si vous les recherchez sur Google, vous les trouverez, mais dans l'ensemble, cela semble être vrai.

Tom Kyte (Oracle VP) a une très bonne réponse avec des explications ici :http://asktom.oracle.com/pls/asktom/f?p=100:11:2148775836129778::::P11_QUESTION_ID:953229842074

TechRepublic a également une bonne explication ici :http://www.techrepublic.com/article/oracle-tip-understand-the-difference-between-in-and-exists-in-subqueries/5297080

J'espère que cela vous aidera...