no_use_residual

用在子查询中,确定父查询与该子查询不通过Semi Residual Join连接。

举例:

--  清理环境
DROP TABLE a CASCADE;
DROP TABLE b CASCADE;

--  创建表
CREATE TABLE a(a1 INT, a2 INT);
CREATE TABLE b(b1 INT, b2 INT);


explain select /*+ no_use_residual*/ * from a where a.a1 in (
    select b1 from b) or a.a2 in (select b1 from b);
QUERY PLAN(text)      
----------------------
Seq Scan on A  (cost=0.00..171.84 rows=6144 width=8)
  Filter: ((hashed subplan) OR (hashed subplan))
  SubPlan
    ->  Seq Scan on B  (cost=0.00..89.92 rows=8192 width=4)
    ->  Seq Scan on B  (cost=0.00..89.92 rows=8192 width=4)
总数目:5

--  删除表
DROP TABLE a CASCADE;
DROP TABLE b CASCADE;