我有2个表,orderData和stagingOrderData。我需要查看stagingOrderData中是否存在任何存在于orderData中的行,以便在导入之前从stagingOrderData表中删除它们。哪个SQL语句更有效连接或存在
测试案例 - 我尝试了加入
select * from
dbo.stagingOrderData s
inner join dbo.OrderData o
on s.productid = o.productid
and s.barcode = o.barcode
and s.orderid = o.orderid
,然后和“存在”
select * from
dbo.stagingOrderData s
where exists(dbo.OrderData o
select * from
where o.productid = s.productid
and o.barcode = s.barcode
and o.orderid = s.orderid)
声明与“存在”,似乎要快得多。
重复 - 在这里看到这个问题,例如:http://stackoverflow.com/questions/227037/can-i-get-better-performance-using-a-join-or-using-exists – 2009-08-13 19:47:42