同じ名前の列を含む2つのテーブルがあります。私は、Table2にどのような明確な値が存在するかを調べようとしますが、Table1には存在しません。そのために私は2つのSELECTを持っています:SQL - 2つのDISTINCTのパフォーマンスが非常に悪い
SELECT DISTINCT Field
FROM Table1
SELECT DISTINCT Field
FROM Table2
両方のSELECTが2秒以内に終了し、それぞれ約10行戻ってきます。私は値を表1に欠けているかを知るために私のクエリを再構築した場合、クエリが完了するまでに数分かかります:
SELECT DISTINCT Field
FROM Table1
WHERE Field NOT IN
(
SELECT DISTINCT Field
FROM Table2
)
私の一時的な回避策は、それと比較する一時表に第二の個別の結果を挿入しています。しかし、パフォーマンスはそれほど素晴らしいものではありません。
これはなぜ起こるのですか?私は、SQL Serverが2番目のDISTINCTを再計算し続けるためだと思いますが、それはなぜですか? SQL Serverはこれを何とか最適化するべきではありませんか?
私はEXCEPTを使用しましたが、私のクエリが大幅にスピードアップしました!ありがとうございました! – Koruba