SQL Select 查询性能改进
SQL Select query Performance improvement
我有一堆这样的查询:
-- 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 : 比较中使用的两个 table 上的列都是主键 primarykey(wh_cd,pos_no,slip_no,ope_date) ...
尝试使用 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
我有一堆这样的查询:
-- 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 : 比较中使用的两个 table 上的列都是主键 primarykey(wh_cd,pos_no,slip_no,ope_date) ...
尝试使用 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