①NOT EXISTS一般都会比较慢
UPDATE A
SET DATE=sysdate
WHERE LINK_TAISHOGAI_FG = '0'
AND NOT EXISTS
(SELECT 1
FROM FROM B
WHERE A.ID1= B.ID1
AND A.ID2 = B.ID2
AND A.ID3 = B.ID3
AND B.ID4 IN ('A','B','C')
)
②上面的改为NOT IN
UPDATE A
SET DATE=sysdate
WHERE LINK_TAISHOGAI_FG = '0'
AND (A.ID1,A.ID2,A.ID3) NOT IN
(SELECT B.ID1,B.ID2,B.ID3
FROM B
WHERE A.ID1= B.ID1
AND A.ID2 = B.ID2
AND A.ID3 = B.ID3
AND B.ID4 IN ('A','B','C')
)
③加入MINUS,能缩短时间
A表的数据如果在BC表里不存在的话将其其中一个字段更新
UPDATE A
SET DATE=sysdate
WHERE LINK_TAISHOGAI_FG = '0'
AND (A.ID1,A.ID2,A.ID3) IN
(
select A.ID1,A.ID2,A.ID3 FROM A
where LINK_TAISHOGAI_FG = '0'
MINUS
select temp.ID1,temp.ID2,temp.ID3
FROM
(
select B.ID1,B.ID2,B.ID3
FROM B
where B.ID4 IN ('A','B','C')
UNION ALL
select C.ID1,C.ID2,C.ID3
FROM C
where C.ID4 IN ('AA','BB','CC')
)
)