前言

业务需求中,时常需要一些复杂查询的结果,然后复杂查询耗费时间,所以我们用物化视图,提高查询效率
物化视图最重要的功能和特性之一,就是其数据会随着基表(或称主表,master表)的变化而变,基表数据增了,物化视图数据会变多;基表数据删了,物化视图数据也会变少。

1.物化视图创建

定时 ON DEMAND物化视图 默认

定时更新数据,例如5min一次

create materialized view mv_runoverview
    REFRESH COMPLETE START WITH SYSDATE
    NEXT SYSDATE+10/(60 * 24)
    as 
    你的SQL语句;

注意:物化视图创建不能有子查询,所以你的优化自己的SQL

举例

这是我自己实业务中操作

create materialized view mv_runoverview
    REFRESH COMPLETE START WITH SYSDATE
    NEXT SYSDATE+10/(60 * 24)
    as
SELECT os.serv_name,
       os.serv_no,
       os.serv_id,
       NVL(ROUND ((SUM (loi1.PROCESS_TIME)/1000) / DECODE (SUM (loi1.run_times),0,1,SUM (loi1.run_times)),2),0) AS AVG_TIME,
       NVL(MAX (PROCESS_TIME),0)                                                             AS max_resp_time,
       NVL(MIN (PROCESS_TIME),0)                                                             AS min_resp_time,
       MAX (os.creation_date) create_date,
       COUNT(run_times) total_num,
       COUNT(DECODE(loi1.inst_status, '1', 1, null))  SUC_NUM,
       COUNT(DECODE(loi1.inst_status, '0', 1, null))  FAIL_NUM,
       os.category_level2
FROM DSGC_SERVICES os,
     DSGC_LOG_INSTANCE loi1
WHERE os.serv_status = '1'
  AND os.serv_no    = loi1.serv_no
GROUP BY os.serv_id,
         os.serv_name,
         os.serv_no ,os.category_level2;

效果

物化视图_SQL

2.ON COMMIT物化视图

参考链接

 create materialized view mv_runoverview
   refresh force on commit 
   as 
   你的SQL语句; 

3.删除物化视图
drop materialized view mv_runoverview; 
4.物化视图介绍

百度:物化视图

送你一首歌:《盛夏的果实》 莫文蔚
附图:《悬崖上的金鱼姬》
物化视图_表数据_02