我正在嘗試使用類似於以下查詢的查詢來查找兩個表(DEV數據庫中的同一個表與一個TEST數據庫)之間的差異。每張桌子有〜30K行和〜5列。SQL EXCEPT性能
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')
FIELD1是char(5)
和Field2爲char(1)
該查詢本質永遠不會終止。
當我使用SET SHOWPLAN_ALL ON
分析這個查詢時,我可以看到樹中有一個很高的嵌套循環。當我將上述查詢更改爲
select * from dev.dbo.table1
except
select * from test.dbo.table2
查詢運行速度很快,並且執行計劃中沒有嵌套循環。
有人可以幫忙解釋一下嗎?我不明白爲什麼會有很大的差異。
微軟SQL Server 2005 –