简要说明执行计划两者区别:
1.SQL> ALTER TABLE DEPT ADD CONSTRAINTS PK_DEPT PRIMARY KEY (deptno);
2.执行两次SQL 如下图所示:
3.结果:同样的SQL,因为in与not in 执行计划走了不同的链接方式,
merge join semi(也叫组合排序半连接),在外部行集,查找内部(即子查询)行集,匹配到一行就马上返回,不再往下查询。
merge join anti(也叫组合排序反连接),和semi相反,只有外部行在内部不能匹配的时候才返回。
注意:in与exists效率一样,not in 和 not exists大部分情况也是一样,实际情况要根据执行计划operation确认!