Sqlが存在するかどうかの違い

Anonim

Sqlが存在するかどうか

TSQLの問題解決はさまざまな方法で利用でき、いずれかを使用して目的の結果を見ることができます。最終結果を達成する方法の1つは、IN句とEXISTS句を使用することです。句を使用すると、利用可能なサブクエリを参照して結果セットをフィルタリングできます。 INとEXISTSの実行はわずかに異なり、評価されるのはこれらの違いです。

<! - 1 - >

INまたはEXISTSを展開するかどうかを決めるさまざまな要素があります。そのうちの1つは、表で使用可能なデータ量です。膨大な量のデータにより、SQL ServerはIndex Seekを使用するのではなく、インデックススキャンの使用に戻ります。

相違点

与えられた統計は、実行計画についても多くのことを言います。この違いは、サーバーが有効な決定を下すのに十分な統計を蓄積したとき、および初めて統計がないときに表示されます。使用されているハードウェアによって、INまたはEXISTSのどちらを使用するかが決まります。これは、使用可能なCPUの数に大きく依存します。

<! - 2 - >

EXISTSは、クエリの結果を別のサブクエリと照合する必要がある場合に実行されます。一方、INは、リスト内にある特定の列の値を取り出すときに使用されます。使用すべき決定は、妥当性のみに基づいている。 e。その使用が適切であると感じるとき。

サブクエリが使用され、NULL値が返された場合、文全体がNULLになります。これは、実際にはEXISTSキーワードの使用を指しています。 INキーワードの使用は、サブクエリのさまざまな値の比較が必要な場合に発生します。 EXISTSキーワードは主に真または偽の文の評価に使用され、INはほとんどの対応する副問合せ文で使用されます。

<!一般的に、EXISTSはINよりも高速です。なぜなら、EXISTSが実行されると、検索でヒットし、その条件が真であるかどうかを確認するためです。 INを実行すると、サブクエリからすべての結果が収集され、さらに処理されるように表示されます。この処理にはしばらく時間がかかります。

クエリのフレーズを正しく実行し、実行前にチェックする必要があることに注意することが重要です。クエリが正しいことを確認しないと、EXISTSとINは異なる値を示しますが、これはSQLサーバーでの使用の目的ではありません。オプティマイザは、必要なときに常に最適化する必要があります。

要約

TSQLの問題解決は、通常、EXISTSとINで行われます。

EXISTSとINを展開するときに若干の違いが見られますが、それぞれの最適化で同じ値が得られるはずです。

EXISTSまたはINを展開するかどうかの決定要因は、

使用するハードウェアも重要です。

EXISTSの実行は、存在する場合に役立ちます与えられたクエリの結果と別のサブクエリを関連付ける必要があります。真または偽の陳述が評価を必要とする場合、EXISTSも非常に一般的です。

INは、リスト内の特定の列を検索する必要がある場合によく使用されます。また、サブクエリでの値の比較が必要な場合にも一般的に使用されます。

EXISTSは、実行されるINより一般的に高速であり、ヒットし、条件が真であるかどうかを調べる

INはサブクエリからすべての結果を収集して処理するので遅くなります。

異なる実行が存在するが、最適化はEXISTSおよびINにおいて同様の結果を与えるはずである。