SQL Server での NULL 比較の処理
SQL Server では、データベース クエリでの NULL 値の処理が課題となることがよくあります。一般的なシナリオは、WHERE 句で使用される変数が NULL 可能である可能性があり、NULL をチェックして別のクエリを実行するために IF ELSE ステートメントを使用する必要がある場合です。
ただし、より多くのクエリを実行できる代替アプローチがあります。最適化された簡単なクエリ。 EXISTS 演算子を利用すると、NULL 比較を効率的に処理する単一のクエリを作成できます。
SELECT * FROM Customers WHERE EXISTS (SELECT OrderID INTERSECT SELECT @OrderID)
このクエリは、最初のサブクエリ (SELECT OrderID) の値が含まれる行のみを返す INTERSECT 演算子を利用します。 ) と 2 番目のサブクエリ (SELECT @OrderID) が一致します。変数 @OrderID が NULL の場合、INTERSECT 操作は空の結果セットを返し、EXISTS 条件が FALSE と評価されます。その結果、メイン クエリでは行が返されません。
一方、変数 @OrderID に有効な値が含まれている場合、INTERSECT 操作は空ではない結果セットを返します。その結果、EXISTS 条件は TRUE と評価され、メイン クエリは Customers テーブルから適切な行を返します。
このアプローチにより、IF ELSE ステートメントの必要性がなくなるだけでなく、クエリのパフォーマンスも最適化されます。 EXISTS 演算子を使用すると、データベース エンジンは、特に Customers テーブルが大きい場合に、より効率的な実行プランを採用できます。
この手法およびその他の文書化されていないクエリ プランの詳細については、Equality に関する Microsoft のドキュメントを参照してください。比較。
以上がSQL Server クエリで NULL 比較を効率的に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。