简要说明执行计划两者区别:

1.SQL> ALTER TABLE DEPT ADD CONSTRAINTS PK_DEPT PRIMARY KEY (deptno);

 

2.执行两次SQL 如下图所示:

ORACLE执行计划之【MERGE JOIN ANTI】与【MERGE JOIN SEMI】

ORACLE执行计划之【MERGE JOIN ANTI】与【MERGE JOIN SEMI】

3.结果:同样的SQL,因为in与not in 执行计划走了不同的链接方式,

merge join semi(也叫组合排序半连接),在外部行集,查找内部(即子查询)行集,匹配到一行就马上返回,不再往下查询。

merge join anti(也叫组合排序反连接),和semi相反,只有外部行在内部不能匹配的时候才返回。

注意:in与exists效率一样,not in 和 not exists大部分情况也是一样,实际情况要根据执行计划operation确认!

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-09-27
  • 2022-12-23
  • 2022-12-23
  • 2021-09-12
猜你喜欢
  • 2021-09-11
  • 2021-05-06
  • 2021-08-24
  • 2021-12-04
  • 2021-10-21
  • 2022-12-23
  • 2021-07-18
相关资源
相似解决方案