プランの説明コード>
正確にExists
を使用する必要がある理由を示したはずです 。通常、質問は Exists vs Count(*)
。 存在する
より高速です。なぜですか?
-
NULLによって存在する課題に関して:サブクエリが
Null
を返す場合 、INの場合、クエリ全体がNull
になります 。したがって、それも処理する必要があります。ただし、Exist
を使用する 、それは単なるfalse
。対処するのがはるかに簡単です。単にIN
Null
とは何も比較できません しかし、存在する
できます。 -
例えば
Exists(Select * from yourtable where bla ='blabla');
1つのヒットが見つかった/一致した瞬間にtrue/falseを取得します 。 -
この場合、
IN
一種のCount(*)
の位置を取ります すべてを選択するにはWHERE
に基づいて一致する行 すべての値を比較しているからです。
ただし、これも忘れないでください:
-
EXISTS
IN
に対して高速で実行されます :サブクエリの結果が非常に大きい場合。 -
IN
EXISTS
に先んじる :サブクエリの結果が非常に小さい場合。
詳細については、を参照してください: