oracle执行计划中NESTED LOOPS SEMI (即半嵌套循环)的解释

NESTED LOOPS SEMI 是Oracle执行计划中的一个部分,主要应用于处理包含IN子查询或EXISTS相关子查询的SQL语句。当找到子查询的第一个匹配值时,主查询会停止执行。这种优化策略可以提高查询效率,通过半嵌套循环伪代码描述了其工作原理,遍历主查询和子查询,一旦发现匹配则结束循环。
摘要由CSDN通过智能技术生成

在存在in的子查询的SQL语句和存在EXISTS的相关子查询的SQL语句的执行计划里,有NESTED LOOPS SEMI (即半嵌套循环)。

所谓的NESTED LOOPS SEMI (即半嵌套循环),就是

the out query stops evaluating (评价,求…的数值)the result set of the inner query when the first value is found。

也就是说,一旦子查询的第一条结果出来,主查询(里的表的当前行)就停止子查询的继续进行执行。


NESTED LOOPS SEMI (即半嵌套循环)执行过程的伪代码如下:

  1. open tab1  (主查询里的表
  2.  while tab1 still has records  
  3.     fetch one record from tab1  
  4.    (并且) result = false  (即将变量result的值置为alse
  5.     open tab2  
  6.     while tab2 still has records  
  7.         fetch one record from tab2  
  8.         if(根据tab1.record 和 tab2.record的值执行一次子查询语句所得的结果集不为空) then  
  9.            result = true  </
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值