NOT EXIST和NOT IN 和MINUS的用法

本文探讨了在SQL查询中使用NOTIN和MINUS操作符优化查询性能的方法,通过实例展示了如何避免使用NOT EXISTS,进而提高查询速度。重点介绍了在特定场景下,利用这些操作符可以显著减少查询时间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

①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')
 )
)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值