最近、私はSql ServerとOracleでnot()に遭遇しました。 LIKE、INなどの異なる演算子でNOT条件とnot()を比較する異なる例を試しました。結果セットとレコード数の点で違いはありませんが、これらの両方が同じであればコミュニティで確認したいまたは任意の警告?あなたのケースではOracleとMS SQL ServerのNOT条件とNOT()の違い
例クエリ
select count(*) from Emp where country not in ('ENGLAND UK', 'HAITI', 'IRELAND')
select count(*) from Emp where not(country in ('ENGLAND UK', 'HAITI', 'IRELAND'))
SQL Serverでは、サーバーに実行計画を生成させることができます。これらの2つのクエリの実行計画を比較して、それらが同一であることを確認できます。 Oracleには、異なる名前で同様の機能があります。 –
SQL 2014と2016: 'IN()'句のリテラル引数リストでは、SQL実行計画に違いはありません。 PK列が含まれている場合は、クラスタ化インデックスのシーク、それ以外の場合はクラスタ化インデックスのスキャンになります。サブクエリと最適キーを使用すると、2回のスキャンと左側のアンチ・セミ・ジョインになり、NOT演算子が置かれていても違いはありません。 – dlatikay