oracle 10053 not in

admin3个月前软件教程45

今天我们来讨论一下Oracle数据库查询计划中的一个重要参数——10053中的not in。

我们知道,在Oracle数据库中,not in这个子句可以用于查询不在某个集合中的数据,比如:

SELECT * FROM students WHERE id NOT IN (SELECT id from absent_students);

那么问题来了,对于优化查询计划而言,not in的处理方式又是怎么样的呢?

首先,Oracle会将not in转化为not exists,比如上面那个例子,就会被转化为:

SELECT * FROM students s WHERE NOT EXISTS (SELECT NULL FROM absent_students a WHERE a.id = s.id);

接着,Oracle会再次转化not exists,把它转化为一组left outer join,比如:

SELECT s.* FROM students s LEFT OUTER JOIN absent_students a ON s.id = a.id WHERE a.id IS NULL;

通过这种方式,Oracle就能够提高查询效率,将not in的查询转化为更高效的left outer join了。

但是,这种转化方式并不是万能的。在一些特殊情况下,not in操作会带来比left outer join更高的性能开销。比如下面这个例子:

SELECT * FROM students WHERE id NOT IN (1,2,3,……,1000);

如果使用left outer join的方式,Oracle会对1000条数据进行匹配,即使匹配结果都是空的,也会产生不必要的性能开销。

在这种情况下,我们就需要采用一些其他的优化方式。比如,将not in中的数据存入一个临时表中,然后再使用not exists查询该表,就能有效避免这种性能问题,比如:

CREATE GLOBAL TEMPORARY TABLE temp_table (id NUMBER);INSERT INTO temp_table (id) VALUES (1);INSERT INTO temp_table (id) VALUES (2);INSERT INTO temp_table (id) VALUES (3);……INSERT INTO temp_table (id) VALUES (1000);SELECT * FROM students WHERE NOT EXISTS (SELECT NULL FROM temp_table WHERE temp_table.id = students.id);

这样,我们就可以提高查询效率,避免不必要的性能开销。

当然,这只是not in操作的一种情况。在实际操作过程中,我们还需要根据具体的情况选择不同的优化方式,以达到最大化查询效率的目的。

以上就是对于Oracle 10053中not in操作的说明,希望对大家有所帮助。

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

qq幸运字符一共有哪些

以QQv8.3.9.643版本为例,QQ运字符一共有:1、两人无亲密关系时,可以获得的幸运字符有:flipped、matey、freunde、minded、match、bff、amigo等等。2、两人...

腾讯旗下的视频软件有哪些

截止2020年7月27日,腾讯旗下的视频软件有:1、微视微视,腾讯旗下短视频创作平台与分享社区,用户不仅可以在微视上浏览各种短视频,同时还可以通过创作短视频来分享自己的所见所闻。此外,微视还结合了微信...

拼多多月卡自动续费吗

拼多多月卡是会自动续费的,关闭自动续费就可以关闭自动续费功能。用户通过发起和朋友、家人、邻居等的拼团,以更低的价格,拼团购买优质商品。拼多多是上海寻梦信息技术有限公司于2015年9月上线的一家专注于C...

银河奇异果卡顿解决方法

银河奇异果卡顿的解决方法是:1、可以尝试点击视频右下角的清晰度,切换清晰度。2、如果还不可以,用户可以点击暂停按钮,等待一会再播放。3、还可以选择下载当前视频,在本地进行离线播放。4、可以更新到最新系...

全民k歌ss是什么水平

全民k歌ss属于较高的水平了,比ss更高的水平是sss,想要获得ss必须所有歌词的平均分要超过80分才可以得到,全民k歌等级有sss、ss、s、A、B、C这六种,全民k歌中各等级划分方式:平均单句得分...

饿了么闪退

饿了么闪退的原因:1、缓存垃圾过多平时在使用软件的过程中,会产生一些垃圾文件,如果长时间不清理会导致手机越来越卡,也会出现闪退状况。2、运行程序过多如果不进行设置,很多软件都会自己运行,而手机后台程序...