当前位置:   article > 正文

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

postgresql 怎么用物化视图重写查询

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

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

  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提示来打开查询重写转换。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/601785
推荐阅读
相关标签
  

闽ICP备14008679号