あなたはアルゴリズムに興味があるので、あなたの質問は IN
の違いに要約されるようです そしてEXISTS
あなたの2つの例は IN
の保存と同じです EXISTS
に変更 CHILD
からの削除で
この違いについては何年にもわたって多くのことが書かれてきましたが、本質的には IN
EXISTS
に対してコンパレータの数が少ない場合に一般的に使用されます より多くのコンパレータを返すサブクエリでより効率的です (特に、これらの値に多数の重複が含まれる場合)。
IN
EXISTS
の間、返されたすべてのコンパレータを評価する必要があります 最初の一致に遭遇したときに満たされます。
これには例外があり、Google で検索すると見つかりますが、全体としてこれは正しいようです。
Tom Kyte (Oracle VP) は、ここに説明を含む非常に良い答えを持っています:http://asktom.oracle.com/pls/asktom/f?p=100:11:2148775836129778::::P11_QUESTION_ID:953229842074
TechRepublic にも適切な説明があります。 in-subqueries/5297080">http://www.techrepublic.com/article/oracle-tip-understand-the-difference-before-in-and-exists-in-subqueries/5297080
これが役に立てば幸いです...