1、在oracle11g以上版本,oracle已经做了优化,能够自动将in优化成exists方式,因此oracle11g以上版本,使用in和exists效果是一样的。
2、在oracle中,使用not exists 和not in的查询结果不一定完全等同的。
- not in 方式:当内表数据中含有null时 not in 查询将返回null。当外表中含有空值记录,not in 查询最终将过滤该条记录。
- not exists方式:将返回不在内表中但是在外表中的记录。当外表含有空值记录,not exists查询最终仍然输出该条记录。