no_use_hashsp

用在子查询中,确定子查询不使用hashed subplan。

举例:

--  清理环境
DROP TABLE c CASCADE;

--  创建表
create table c(c1 int, c2 int);


--  使用no_use_hashsp
explain select * from c where c1 in (select /*+ no_use_hashsp*/ c2 from c limit 1) or c2 > 0;
QUERY PLAN(text)      
----------------------
Seq Scan on C  (cost=0.00..141.12 rows=5461 width=8)
  Filter: ((C2 > 0) OR (subplan))
  SubPlan
    ->  Materialize  (cost=0.01..0.01 rows=1 width=4)
          ->  Limit  (cost=0.00..0.01 rows=1 width=4)
                ->  Seq Scan on C  (cost=0.00..89.92 rows=1 width=4)
总数目:6


--  不使用no_use_hashsp
explain select * from c where c1 in (select c2 from c limit 1) or c2 > 0;
QUERY PLAN(text)      
----------------------
Seq Scan on C  (cost=0.00..151.36 rows=5461 width=8)
  Filter: ((C2 > 0) OR (hashed subplan))
  SubPlan
    ->  Limit  (cost=0.00..0.01 rows=1 width=4)
          ->  Seq Scan on C  (cost=0.00..89.92 rows=1 width=4)
总数目:5
    

--  删除表
DROP TABLE c CASCADE;