create or replace view v_emp as select emp.empno,emp.ename,emp.deptno from emp,dept
where emp.deptno=dept.deptno;
SQL> select * from t10;
ID NAME
---------- ----------
1 a
2 b
3 c
7902 d
7900 e
7844 f
已选择6行。
SQL> select * from v_emp;
EMPNO ENAME DEPTNO
---------- ---------- ----------
7369 SMITH 20
7499 ALLEN 30
7521 WARD 30
7566 JONES 20
7654 MARTIN 30
7698 BLAKE 30
7782 CLARK 10
7788 SCOTT 20
7839 KING 10
7844 TURNER 30
7876 ADAMS 20
EMPNO ENAME DEPTNO
---------- ---------- ----------
7900 JAMES 30
7902 FORD 20
7934 MILLER 10
已选择14行。
SQL> select /*+ use_nl(a b) */ * from t10 a,v_emp b
where a.id=b.empno(+) 2 ;
已选择6行。
执行计划
----------------------------------------------------------
Plan hash value: 1825515217
---------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 6 | 228 | 9 (0)| 00:00:01 |
| 1 | NESTED LOOPS OUTER | | 6 | 228 | 9 (0)| 00:00:01 |
| 2 | TABLE ACCESS FULL | T10 | 6 | 150 | 3 (0)| 00:00:01 |
|* 3 | TABLE ACCESS BY INDEX ROWID| EMP | 1 | 13 | 1 (0)| 00:00:01 |
|* 4 | INDEX UNIQUE SCAN | PK_EMP | 1 | | 0 (0)| 00:00:01 |
---------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - filter("EMP"."DEPTNO"(+) IS NOT NULL)
4 - access("A"."ID"="EMP"."EMPNO"(+))
Note
-----
- dynamic sampling used for this statement (level=2)
统计信息
----------------------------------------------------------
11 recursive calls
0 db block gets
24 consistent gets
0 physical reads
0 redo size
837 bytes sent via SQL*Net to client
415 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
6 rows processed
SQL> select /*+ use_nl(a b) no_merge(b)*/ * from t10 a,v_emp b
where a.id=b.empno(+) 2 ;
已选择6行。
执行计划
----------------------------------------------------------
Plan hash value: 3375986511
----------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 6 | 438 | 9 (0)| 00:00:01 |
| 1 | NESTED LOOPS OUTER | | 6 | 438 | 9 (0)| 00:00:01 |
| 2 | TABLE ACCESS FULL | T10 | 6 | 228 | 3 (0)| 00:00:01 |
| 3 | VIEW PUSHED PREDICATE | V_EMP | 1 | 35 | 1 (0)| 00:00:01 |
|* 4 | TABLE ACCESS BY INDEX ROWID| EMP | 1 | 13 | 1 (0)| 00:00:01 |
|* 5 | INDEX UNIQUE SCAN | PK_EMP | 1 | | 0 (0)| 00:00:01 |
----------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
4 - filter("EMP"."DEPTNO" IS NOT NULL)
5 - access("EMP"."EMPNO"="A"."ID")
Note
-----
- dynamic sampling used for this statement (level=2)
统计信息
----------------------------------------------------------
17 recursive calls
0 db block gets
40 consistent gets
0 physical reads
0 redo size
832 bytes sent via SQL*Net to client
415 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
6 rows processed
可以看到谓词推入通过关联列推入.