查询转换——使用物化视图进行查询重写(4)!

来源:互联网 发布:c语言自学视频 编辑:程序博客网 时间:2024/05/18 13:29

查询重写是一种发生在当一个查询或查询的一部分已经被保存为一个物化视图,转换器重写该查询以使用预先计算好的物化视图数据而不需要执行当前查询的转换。

/*+ REWRITE(MVIEW_NAME) */  使用物化视图进行查询重写。

[sql] view plaincopyprint?
  1. SQL> select e.empno, e.ename, e.job  
  2.   2    from emp e, dept d  
  3.   3   where e.deptno = d.deptno  
  4.   4     and d.dname = 'RESEARCH';  
  5.   
  6.      EMPNO ENAME      JOB  
  7. ---------- ---------- ---------  
  8.       7566 JONES      MANAGER  
  9.       7902 FORD       ANALYST  
  10.       7876 ADAMS      CLERK  
  11.       7369 SMITH      CLERK  
  12.       7788 SCOTT      ANALYST  
  13.   
  14.   
  15. 执行计划  
  16. ----------------------------------------------------------  
  17. Plan hash value: 844388907  
  18.   
  19. ----------------------------------------------------------------------------------------  
  20. | Id  | Operation                    | Name    | Rows  | Bytes | Cost (%CPU)| Time     |  
  21. ----------------------------------------------------------------------------------------  
  22. |   0 | SELECT STATEMENT             |         |     5 |   170 |     6  (17)| 00:00:01 |  
  23. |   1 |  MERGE JOIN                  |         |     5 |   170 |     6  (17)| 00:00:01 |  
  24. |*  2 |   TABLE ACCESS BY INDEX ROWID| DEPT    |     1 |    13 |     2   (0)| 00:00:01 |  
  25. |   3 |    INDEX FULL SCAN           | PK_DEPT |     4 |       |     1   (0)| 00:00:01 |  
  26. |*  4 |   SORT JOIN                  |         |    14 |   294 |     4  (25)| 00:00:01 |  
  27. |   5 |    TABLE ACCESS FULL         | EMP     |    14 |   294 |     3   (0)| 00:00:01 |  
  28. ----------------------------------------------------------------------------------------  
  29.   
  30. Predicate Information (identified by operation id):  
  31. ---------------------------------------------------  
  32.   
  33.    2 - filter("D"."DNAME"='RESEARCH')  
  34.    4 - access("E"."DEPTNO"="D"."DEPTNO")  
  35.        filter("E"."DEPTNO"="D"."DEPTNO")  
  36.   
  37. SQL> set autotrace off;  
  38. SQL> create materialized view sales_time_product_mv enable query rewrite as  
  39.   select e.empno, e.ename, e.job  
  40.     from emp e, dept d  
  41.    where e.deptno = d.deptno  
  42.   5       and d.dname = 'RESEARCH';  
  43.   
  44. 实体化视图已创建。  
  45.   
  46. SQL> set autotrace on explain;  
  47. SQL> select e.empno, e.ename, e.job  
  48.   2    from emp e, dept d  
  49.   3   where e.deptno = d.deptno  
  50.   4     and d.dname = 'RESEARCH';  
  51.   
  52.      EMPNO ENAME      JOB  
  53. ---------- ---------- ---------  
  54.       7566 JONES      MANAGER  
  55.       7902 FORD       ANALYST  
  56.       7876 ADAMS      CLERK  
  57.       7369 SMITH      CLERK  
  58.       7788 SCOTT      ANALYST  
  59.   
  60.   
  61. 执行计划  
  62. ----------------------------------------------------------  
  63. Plan hash value: 663088863  
  64.   
  65. ------------------------------------------------------------------------------------------------------  
  66. | Id  | Operation                    | Name                  | Rows  | Bytes | Cost (%CPU)| Time     |  
  67. ------------------------------------------------------------------------------------------------------  
  68. |   0 | SELECT STATEMENT             |                       |     5 |   130 |     2   (0)| 00:00:01 |  
  69. |   1 |  MAT_VIEW REWRITE ACCESS FULL| SALES_TIME_PRODUCT_MV |     5 |   130 |     2   (0)| 00:00:01 |  
  70. ------------------------------------------------------------------------------------------------------  
  71.   
  72. Note  
  73. -----  
  74.    - dynamic sampling used for this statement (level=2)  

我在物化视图中使用了一个rewrite提示来打开查询重写转换。


0 0
原创粉丝点击