例に直接向かいましょう:
クエリ1:
Select *
Into #temp_v1
From View1
Select *
Into #temp_v2
From View2
select *
From #temp_v1 v1
where not exists (
Select * From #temp_v2 where key = v1.key
)
これはよりもはるかに高速です
クエリ2:
select *
From View1 v1
where not exists (
Select * From View2 where key = v1.key
)
さて、明らかに、私は例を単純化しました。View1はビューのビューであり、結合の使用を困難にするためにさらに多くの比較が必要です。
私の質問は、SQLをどのように書くべきかということではなく、SQL Serverがクエリ1を3秒で実行し、クエリ2を10分で実行できるようになる理由です。
さらに重要なのは、クエリ1のような実行プランを作成するためにオプティマイザーに提供できる魔法のオプションがあります。