SQL Select查询性能改进

想要学习

我有很多这样的查询:

-- get all data that exists in source but not yet in destination
SELECT 
*
INTO #temp
FROM source T010T
WHERE NOT EXISTS
                (
                SELECT TOP 1 1 FROM destination P510T
                WHERE WH_CD = T010T.WH_CD  
                AND   POS_NO = T010T.POS_NO 
                AND   SLIP_NO = T010T.TRAN_NO
                AND   OPE_DATE = T010T.SL_REC_DATE 
                ) 
-- process the data 
....
-- insert data into destination 
Insert into destination select * From #temp

我想知道这种方法会影响性能吗?因为我没有要测试的真实数据,并且该数据正在本地运行,所以我有点害怕,当现实中出现这些查询时,a @@会很痛苦!

有没有更好的选择?

p / s:用于比较的两个表上的列都是主键 primarykey(wh_cd,pos_no,slip_no,ope_date) ...

乔基·纳库里(Giorgi Nakeuri)

尝试使用Left Join

SELECT 
*
INTO #temp
FROM source T010T
LEFT JOIN destination P510T
                ON    WH_CD = T010T.WH_CD  
                AND   POS_NO = T010T.POS_NO 
                AND   SLIP_NO = T010T.TRAN_NO
                AND   OPE_DATE = T010T.SL_REC_DATE 
WHERE P510T.WH_CD IS NULL

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章