• ベストアンサー

除外するデータが大量にある場合にNOT IN を使用した場合

例えば除外するデータ量が1000件以上ある場合、NOT INで検索すると、応答時間は遅くなるし、SQL文も長くなると思います。パフォーマンス的にはよくないのでしょうか? 他に除外したいデータ量が大量にある場合に何かよい方法はありませんか? データは数値ですが、LIKEなどを使用するのは難しいです。 なぜなら、除外するデータは1もあれば、99999999などという数値もあるからバラバラです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

テーブルを新設して構わないのであれば 除外データ用のテーブルを新たに作成し NOT EXISTSで抽出を行うのが無難ではないでしょうか。 例えば SELECT * FROM T1 WHERE NOT EXISTS(SELECT * FROM T2 WHERE T2.F1 = T1.F1) というSQLを組めば、T1のテーブルから T2のテーブルに存在しないデータだけを検索できます。 T2のF1に除外したい値を入れておけば それ以外の値を持つデータだけがT1から抽出されるわけです。 このやり方ならば、除外したいデータの種類が変わった時も T2のデータを変更すれば良いだけで、SQLの修正は必要ありません。

aiurai54
質問者

お礼

そうなんですね~。新しいDBをつくるとなると、ちょっと時間がかかりそうです。 どうもありがとうございます。

関連するQ&A