我正在尝试使用类似以下查询的查询语句,以查找两个表(DEV数据库中的相同表与TEST数据库中的相同表)之间的差异。每个表都有大约30K行和5列。
select field1,field2,field3,field4,field5 from dev.dbo.table1
where field1+field2 in ('string1','string2','string3',...,'string50')
except
select field1,field2,field3,field4,field5 from test.dbo.table1
where field1+field2 in ('string1','string2','string3',...,'string50')
字段1是char(5)
,字段2是char(1)
这个查询基本上永远不会终止。
当我使用SET SHOWPLAN_ALL ON
分析这个查询时,我可以看到树中有一个嵌套循环。当我将上述查询更改为
select * from dev.dbo.table1
except
select * from test.dbo.table2
查询运行速度快,执行计划中没有嵌套循环。
可以有人帮忙解释一下吗?我不明白为什么会有如此大的差异。