让我们直接来看这个例子:
查询一:
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 为何能在 3 秒内执行查询 1,并在 10 分钟内执行查询 2。
更重要的是,有一个神奇的选项,我可以让优化器创建一个像查询 1 这样的执行计划。