业务需求中,时常需要一些复杂查询的结果,然后复杂查询耗费时间,所以我们用物化视图,提高查询效率
物化视图最重要的功能和特性之一,就是其数据会随着基表(或称主表,master表)的变化而变,基表数据增了,物化视图数据会变多;基表数据删了,物化视图数据也会变少。
定时 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;
效果
2.ON COMMIT物化视图
create materialized view mv_runoverview
refresh force on commit
as
你的SQL语句;
3.删除物化视图
drop materialized view mv_runoverview;
4.物化视图介绍
送你一首歌:《盛夏的果实》 莫文蔚
附图:《悬崖上的金鱼姬》