Da Sie sich für den Algorithmus interessieren, scheint Ihre Frage auf den Unterschied zwischen IN
hinauszulaufen und EXISTS
da Ihre beiden Beispiele bis auf IN
identisch sind zu einem EXISTS
ändern in der Löschung aus dem CHILD
Tabelle.
Über diesen Unterschied wurde im Laufe der Jahre ziemlich viel geschrieben, aber im Wesentlichen IN
wird im Allgemeinen verwendet, wenn die Anzahl der Komparatoren klein ist, während EXISTS
ist effizienter für Unterabfragen, die eine größere Anzahl von Komparatoren zurückgeben (insbesondere, wenn diese Werte eine große Anzahl von Duplikaten enthalten).
IN
muss jeden zurückgegebenen Komparator auswerten, solange EXISTS
ist zufrieden, wenn es auf die erste Übereinstimmung trifft.
Es gibt Ausnahmen davon und wenn Sie danach googeln, werden Sie sie finden, aber im Großen und Ganzen scheint dies zuzutreffen.
Tom Kyte (Oracle VP) hat hier eine sehr gute Antwort mit Erläuterungen:http://asktom.oracle.com/pls/asktom/f?p=100:11:2148775836129778::::P11_QUESTION_ID:953229842074
TechRepublic hat hier auch eine gute Erklärung:http://www.techrepublic.com/article/oracle-tip-understand-the-difference-between-in-and-exists-in-subqueries/5297080
Hoffe das hilft...