Aangezien u geïnteresseerd bent in het algoritme, lijkt uw vraag neer te komen op het verschil tussen IN
en EXISTS
aangezien je twee voorbeelden hetzelfde zijn, behalve de IN
veranderen naar een EXISTS
in het verwijderen van het CHILD
tafel.
Er is in de loop der jaren nogal wat geschreven over dit verschil, maar in wezen IN
wordt over het algemeen gebruikt waar het aantal vergelijkers klein is, terwijl EXISTS
is efficiënter voor subquery's die een groter aantal vergelijkers retourneren (vooral als die waarden een groot aantal duplicaten bevatten).
IN
moet elke geretourneerde comparator evalueren terwijl EXISTS
is tevreden wanneer het de eerste wedstrijd tegenkomt.
Hierop zijn uitzonderingen en als je erop googelt, zul je ze vinden, maar over het algemeen lijkt dit waar te zijn.
Tom Kyte (Oracle VP) heeft hier een heel goed antwoord met uitleg:http://asktom.oracle.com/pls/asktom/f?p=100:11:2148775836129778::::P11_QUESTION_ID:953229842074
TechRepublic heeft hier ook een goede uitleg:http://www.techrepublic.com/article/oracle-tip-understand-the-difference-between-in-and-exists-in-subqueries/5297080
Ik hoop dat dit helpt...