Search notes:

Oracle SQL Plan operation: VIEW PUSHED PREDICATE

The VIEW PUSHED PREDICATE indicates that the optimizer chose to push the predicates from the outer query block into the inner («view») query block.
create table tq84_O (val_i number(2), sel varchar2(6));
create table tq84_I (id number, pad varchar2(250));

insert into tq84_O
select
   mod(level, 100),
   to_char(level * 1234, 'fmxxxxxx')
from
   dual connect by level <= 1000;


insert into tq84_I
select
   mod(level * 5, 100),
   rpad('*', 250, '*')
from
   dual connect by level <= 1000;
   

create index tq84_I_ix on tq84_I(id);

begin
   dbms_stats.gather_table_stats(user, 'tq84_O');
   dbms_stats.gather_table_stats(user, 'tq84_I');
end;
/

explain plan for
select
   o.val_i,
   i.cnt
from
  tq84_O o   join
 (select
     id,
     count(*) cnt
  from
     tq84_I
  group by
     id
 ) i on
  o.val_i = i.id
where
  o.sel = '1c9ee';
     
select * from table(dbms_xplan.display(format => 'basic'));
--
-- ---------------------------------------------
-- | Id  | Operation               | Name      |
-- ---------------------------------------------
-- |   0 | SELECT STATEMENT        |           |
-- |   1 |  NESTED LOOPS           |           |
-- |   2 |   TABLE ACCESS FULL     | TQ84_O    |
-- |   3 |   VIEW PUSHED PREDICATE |           |
-- |   4 |    FILTER               |           |
-- |   5 |     SORT AGGREGATE      |           |
-- |   6 |      INDEX RANGE SCAN   | TQ84_I_IX |
-- ---------------------------------------------

drop table tq84_I;
drop table tq84_O;

See also

The SQL hints push_pred and no_push_pred
Other plan operations such as VIEW or UNION ALL PUSHED PREDICATE.

Index