用外连接代替”NOT IN”

来源:互联网 发布:珠海电话营销软件 编辑:程序博客网 时间:2024/05/08 04:13

今天跟了一个查询过程,发现速度始终上不去。其中很多地方用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;

原创粉丝点击