关于view 的执行计划

SQL> DESC emp_temp
 Name       Null? Type
 ----------------------------------------------------- -------- ------------------------------------
 EMPNO NUMBER(4)
 ENAME       NOT NULL VARCHAR2(10)
 JOB VARCHAR2(9)
 MGR NUMBER(4)
 HIREDATE DATE
 SAL NUMBER(7,2)
 COMM NUMBER(7,2)
 DEPTNO NUMBER(2)

SQL> SHOW USER
USER is "SCOTT"
SQL> create view emp_mgr_view as select * from emp_temp where job='MANAGER';

View created.

SQL> select EMPNO,SAL  from emp_mgr_view WHERE ENAME='CLARK';

     EMPNO  SAL
---------- ----------
      7782 2450

SQL> select * from table(dbms_xplan.display_cursor(null,null,'advanced'));

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
SQL_ID 41c0jz9cwfrxp, child number 0
-------------------------------------
select EMPNO,SAL  from emp_mgr_view WHERE ENAME='CLARK'

Plan hash value: 2473744504

------------------------------------------------------------------------------
| Id  | Operation  | Name     | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |     |     |     |   3 (100)|     |
|*  1 |  TABLE ACCESS FULL| EMP_TEMP |   1 |  23 |   3   (0)| 00:00:01 |
------------------------------------------------------------------------------

Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------

   1 - SEL$F5BB74E1 / EMP_TEMP@SEL$2

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------

Outline Data
-------------

  /*+
      BEGIN_OUTLINE_DATA
      IGNORE_OPTIM_EMBEDDED_HINTS
      OPTIMIZER_FEATURES_ENABLE('10.2.0.1')
      ALL_ROWS
      OUTLINE_LEAF(@"SEL$F5BB74E1")
      MERGE(@"SEL$2")
      OUTLINE(@"SEL$1")
      OUTLINE(@"SEL$2")
      FULL(@"SEL$F5BB74E1" "EMP_TEMP"@"SEL$2")
      END_OUTLINE_DATA
  */

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter(("ENAME"='CLARK' AND "JOB"='MANAGER'))

Column Projection Information (identified by operation id):
-----------------------------------------------------------

   1 - "EMPNO"[NUMBER,22], "SAL"[NUMBER,22]

44 rows selected.

SQL> create view emp_view as select * from emp_temp where job='MANAGER'AND ROWNUM<10;

View created.

SQL> select EMPNO,SAL  from emp_view WHERE ENAME='CLARK';

     EMPNO  SAL
---------- ----------
      7782 2450

SQL> select * from table(dbms_xplan.display_cursor(null,null,'advanced'));

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
SQL_ID 4k3ku0azd62ms, child number 0
-------------------------------------
select EMPNO,SAL  from emp_view WHERE ENAME='CLARK'

Plan hash value: 2208042655

--------------------------------------------------------------------------------
| Id  | Operation    | Name     | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------
|   0 | SELECT STATEMENT    |       |       |       |     3 (100)|       |
|*  1 |  VIEW    | EMP_VIEW |     3 |    99 |     3 (0)| 00:00:01 |
|*  2 |   COUNT STOPKEY     |       |       |       |    |       |
|*  3 |    TABLE ACCESS FULL| EMP_TEMP |     3 |    69 |     3 (0)| 00:00:01 |
--------------------------------------------------------------------------------

Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------

   1 - SEL$2 / EMP_VIEW@SEL$1
   2 - SEL$2
   3 - SEL$2 / EMP_TEMP@SEL$2

Outline Data
-------------

  /*+
      BEGIN_OUTLINE_DATA
      IGNORE_OPTIM_EMBEDDED_HINTS
      OPTIMIZER_FEATURES_ENABLE('10.2.0.1')
      ALL_ROWS
      OUTLINE_LEAF(@"SEL$2")
      OUTLINE_LEAF(@"SEL$1")
      NO_ACCESS(@"SEL$1" "EMP_VIEW"@"SEL$1")
      FULL(@"SEL$2" "EMP_TEMP"@"SEL$2")

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
      END_OUTLINE_DATA
  */

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter("ENAME"='CLARK')
   2 - filter(ROWNUM<10)
   3 - filter("JOB"='MANAGER')


Column Projection Information (identified by operation id):
-----------------------------------------------------------

   1 - "EMPNO"[NUMBER,22], "ENAME"[VARCHAR2,10], "SAL"[NUMBER,22]
   2 - "EMPNO"[NUMBER,22], "ENAME"[VARCHAR2,10], "SAL"[NUMBER,22]
   3 - "EMPNO"[NUMBER,22], "ENAME"[VARCHAR2,10], "SAL"[NUMBER,22]

51 rows selected.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

SQL> select EMPNO,ENAME from emp WHERE empno in(select empno from emp_view);

     EMPNO ENAME
---------- ----------
      7782 CLARK
      7698 BLAKE
      7566 JONES

SQL> select * from table(dbms_xplan.display_cursor(null,null,'advanced'));

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
SQL_ID 1puw24sw4n5dz, child number 0
-------------------------------------
select EMPNO,ENAME from emp WHERE empno in(select empno from emp_view)

Plan hash value: 3671142903

-----------------------------------------------------------------------------------------
| Id  | Operation     | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT     | |  |     |     5 (100)|   |
|   1 |  NESTED LOOPS     | |     3 |    69 |     5  (20)  | 00:00:01 |
|   2 |   VIEW     | VW_NSO_1   |     3   |    39 |     3   (0)    | 00:00:01 |
|   3 |    HASH UNIQUE     | |     3 |    12 |     | |
|   4 |     VIEW              | EMP_VIEW |     3 |    12 |     3   (0)| 00:00:01 |
|*  5 |      COUNT STOPKEY     | | | |     | |
|*  6 |       TABLE ACCESS FULL      | EMP_TEMP |     3 |    36 |     3   (0)| 00:00:01 |
|   7 |   TABLE ACCESS BY INDEX ROWID| EMP |     1 |    10 |     1   (0)| 00:00:01 |

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
|*  8 |    INDEX UNIQUE SCAN     | PK_EMP |     1 | |     0   (0)| |
-----------------------------------------------------------------------------------------

Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------

   1 - SEL$5DA710D3
   2 - SEL$683B0107 / VW_NSO_1@SEL$5DA710D3
   3 - SEL$683B0107
   4 - SEL$3    / EMP_VIEW@SEL$2
   5 - SEL$3
   6 - SEL$3    / EMP_TEMP@SEL$3
   7 - SEL$5DA710D3 / EMP@SEL$1
   8 - SEL$5DA710D3 / EMP@SEL$1

Outline Data
-------------

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------

  /*+
      BEGIN_OUTLINE_DATA
      IGNORE_OPTIM_EMBEDDED_HINTS
      OPTIMIZER_FEATURES_ENABLE('10.2.0.1')
      ALL_ROWS
      OUTLINE_LEAF(@"SEL$3")
      OUTLINE_LEAF(@"SEL$683B0107")
      OUTLINE_LEAF(@"SEL$5DA710D3")
      UNNEST(@"SEL$2")
      OUTLINE(@"SEL$3")
      OUTLINE(@"SEL$2")
      OUTLINE(@"SEL$683B0107")
      OUTLINE(@"SEL$1")
      NO_ACCESS(@"SEL$5DA710D3" "VW_NSO_1"@"SEL$5DA710D3")
      INDEX(@"SEL$5DA710D3" "EMP"@"SEL$1" ("EMP"."EMPNO"))
      LEADING(@"SEL$5DA710D3" "VW_NSO_1"@"SEL$5DA710D3" "EMP"@"SEL$1")

PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
      USE_NL(@"SEL$5DA710D3" "EMP"@"SEL$1")
      NO_ACCESS(@"SEL$683B0107" "EMP_VIEW"@"SEL$2")
      FULL(@"SEL$3" "EMP_TEMP"@"SEL$3")
      END_OUTLINE_DATA
  */

Predicate Information (identified by operation id):
---------------------------------------------------

   5 - filter(ROWNUM<10)
   6 - filter("JOB"='MANAGER')
   8 - access("EMPNO"="$nso_col_1")

Column Projection Information (identified by operation id):
-----------------------------------------------------------

   1 - "EMPNO"[NUMBER,22], "ENAME"[VARCHAR2,10]


PLAN_TABLE_OUTPUT
----------------------------------------------------------------------------------------------------
   2 - "$nso_col_1"[NUMBER,22]
   3 - "EMPNO"[NUMBER,22]
   4 - "EMPNO"[NUMBER,22]
   5 - "EMPNO"[NUMBER,22]
   6 - "EMPNO"[NUMBER,22]
   7 - "EMPNO"[NUMBER,22], "ENAME"[VARCHAR2,10]
   8 - "EMP".ROWID[ROWID,10], "EMPNO"[NUMBER,22]

76 rows selected.


SQL> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

5icode.top

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值