SQL Server 2008 R2 查询优化器拼图
我们有两个表,都包含 900 万行。70.000 行不同,其他相同。
这很快,13秒,
select * from bigtable1
except select * from similar_bigtable2
Run Code Online (Sandbox Code Playgroud)
这对输出进行排序并且也很快,13 秒,
select * into #q from bigtable1
except select * from similar_bigtable2
select * from #q order by sort_column
Run Code Online (Sandbox Code Playgroud)
虽然这非常缓慢:
;with q as (
select * from bigtable1
except select * from similar_bigtable2
)
select * from q order by sort_column
Run Code Online (Sandbox Code Playgroud)
甚至我有时用来提示 SQL Server 需要预先计算查询的某个部分才能继续执行的“技巧”也不起作用并导致查询速度变慢:
;with q as (
select top 100 percent * from bigtable1
except select * from …Run Code Online (Sandbox Code Playgroud)