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