用外连接代替”NOT IN”

今天跟了一个查询过程,发现速度始终上不去。其中很多地方用NOT IN SQLnot in是好读,但效率的确不咋地。。因为他应该是对整个表通读一般(FULL SCAN, 如果数据量稍微大一点,速度就不咋地了,更何况这么多次的NOT IN 调用。。。。头脑一热,全给他改了。改了后效果明显不错。闲来总结了一下,网上也查了下,发现还是一种非主流的做法。有褒有贬,但是用着好用不就行啦!

甩个简单的例子大家来看看。

//速度慢地NOT IN  随便搞多几W条数据,就发现慢鸟。

SELECT * FROM TAB_A  WHERE IID NOT IN (SELECT iid FROM TAB_B)

 

//改为外连接,可以这样写。效果立竿见影

SELECT * FROM TAB_A.* FROM TAB_A,TAB_B  ON TAB_A.IID = TAB_B.IID(+) AND TAB_B.ID IS NULL;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值