当前位置:   article > 正文

Oracle Exists与Not Exists 效率问题_oracle not exists性能

oracle not exists性能

oracle NOT exists 效率差

从执行过程来看,LEFT JOIN方式的主要消耗在Sending data一项上,而NOT EXISTS方式主要消耗在executeing和Sending data两项上,受限于Profiling只存放100行记录缘故,从Profiling只能看到47个executeing和Sending data的组合项(每个组合项约50us),通过执行计划看出,外表t_monitor的数据量为578436行,忽略统计信息不准情况下,使用NOT EXISTS方式应该会产生578436个executeing和Sending data的组合项,总计消耗时间=50us*578436=28921800us=28.92s

从上面的执行过程可以推断出:
使用NOT EXISTS方式的执行性能严重依赖于NOT EXISTS 子查询的执行次数即外层查询结果集的数据量。
1、当外层查询结果集的数据量N较小时执行性能较好,如有N=10执行时间为50us*10=500us=0.005s,再加上一些额外消耗,执行结果也能在0.01秒或10毫秒内范围,这个响应时间应该能被大部分应用程序接受。
2、当外层程序结果集的数据量N较大甚至上千万数据量时,NOT EXISTS的查询性能会变得非常糟糕,甚至会大量消耗服务器IO和CPU资源从而影响其他业务正常运行。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/480049
推荐阅读
相关标签
  

闽ICP备14008679号