怎样让一个表的数据与一个视图的数据保持同步 我有一个视图,与多个表相关连,并使用了union,在查询这个视图的时候非常慢。我想用一个临时表与这个视图保持数据同步,提高查询效率,有什么可行的方案吗。谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 SQL> create view v_test as select * from test;视图被创建SQL> edSQL> create materialized view mv_test refresh complete as select * from v_test;物化视图被创建SQL> select * from test; ID NAME CODE RN RN1---------- -------------------------------------------------- -------------------------------------------------- ---------- ---------- 1 aaa nPPP1 1 1 aaa nPPP2 2 1 2 bbb nQQQ1 1 SQL> insert into test values(3,'test','test',3,3);1 行 已插入SQL> commit;提交完成SQL> select * from test; ID NAME CODE RN RN1---------- -------------------------------------------------- -------------------------------------------------- ---------- ---------- 1 aaa nPPP1 1 1 aaa nPPP2 2 1 2 bbb nQQQ1 1 3 test test 3 3SQL> select * from mv_test; ID NAME CODE RN RN1---------- -------------------------------------------------- -------------------------------------------------- ---------- ---------- 1 aaa nPPP1 1 1 aaa nPPP2 2 1 2 bbb nQQQ1 1 SQL> select * from v_test; ID NAME CODE RN RN1---------- -------------------------------------------------- -------------------------------------------------- ---------- ---------- 1 aaa nPPP1 1 1 aaa nPPP2 2 1 2 bbb nQQQ1 1 3 test test 3 3SQL> exec dbms_mview.refresh('mv_test','c');PL/SQL 过程成功完成SQL> select * from mv_test; ID NAME CODE RN RN1---------- -------------------------------------------------- -------------------------------------------------- ---------- ---------- 1 aaa nPPP1 1 1 aaa nPPP2 2 1 2 bbb nQQQ1 1 3 test test 3 3 楼主,你表里数据更新速度快不,如果不是很快,建议楼主采用cenlmmx(学海无涯苦作舟) 的方法。创建物化视图的时候可以考虑用start with sysdate next sysdate+2选项,要数据库自己来刷新数据,其中sysdate+2是下次刷新的时间,楼主可以根据实际情况设定。 selecthis(小懒蛋)指的效率问题是什么,我如果10分钟刷新一次数据,可以吗,如果我有10万条记录,刷新一次要多长时间? create materialized view mv_test refresh complete start with sysdate next sysdate+2as select * from v_test; 可以作到每10分钟刷新一次start with sysdate next sysdate+10/24*60影响刷新的时间有很多因素,比如硬件的配置,访问的是本地表还是远程表,等等。 刚才试了一下,我原来的视图里面有子查询,我执行的时候告诉我不能有子查询。create materialized view mpubresumerefresh completestart with sysdate next sysdate+2 asselect * from baseuser 如果是本地表,10w条数据应该不要好长时间,建议楼主先用cenlmmx(学海无涯苦作舟) 的方法测试下还可以用增量刷新的方式,但需要在源表上建立日志表 zhzhl0(太极)能看看我发给你的消息吗。 Oracle 出了很多问题,那个大大能帮忙分析一下 大表中通过条件约束取数据集 如何入门数据库 ‘-0001/01/01’表示的是公元前1年还是公元前2年 mysql-->oracle求助 前辈们,给Oracle新手一点指点吧 rman的问题急!1 最初级的一点基础没有向高手请教应该怎样学好oracle(至少做成DBA)。 请问Orcale中的数据库中哪个结点下? 过多的analyze是否会象过多的索引一样影响数据库的性能? ORACLE中存取图片的问题!?? 这个是否属于多线程问题?能帮忙解决者,分数全送,不够再加!
---------- -------------------------------------------------- -------------------------------------------------- ---------- ----------
1 aaa nPPP1 1
1 aaa nPPP2 2 1
2 bbb nQQQ1 1 SQL> insert into test values(3,'test','test',3,3);1 行 已插入SQL> commit;提交完成SQL> select * from test; ID NAME CODE RN RN1
---------- -------------------------------------------------- -------------------------------------------------- ---------- ----------
1 aaa nPPP1 1
1 aaa nPPP2 2 1
2 bbb nQQQ1 1
3 test test 3 3SQL> select * from mv_test; ID NAME CODE RN RN1
---------- -------------------------------------------------- -------------------------------------------------- ---------- ----------
1 aaa nPPP1 1
1 aaa nPPP2 2 1
2 bbb nQQQ1 1 SQL> select * from v_test; ID NAME CODE RN RN1
---------- -------------------------------------------------- -------------------------------------------------- ---------- ----------
1 aaa nPPP1 1
1 aaa nPPP2 2 1
2 bbb nQQQ1 1
3 test test 3 3SQL> exec dbms_mview.refresh('mv_test','c');PL/SQL 过程成功完成SQL> select * from mv_test; ID NAME CODE RN RN1
---------- -------------------------------------------------- -------------------------------------------------- ---------- ----------
1 aaa nPPP1 1
1 aaa nPPP2 2 1
2 bbb nQQQ1 1
3 test test 3 3
refresh complete
start with sysdate next sysdate+2
as select * from v_test;
start with sysdate next sysdate+10/24*60影响刷新的时间有很多因素,比如硬件的配置,
访问的是本地表还是远程表,等等。
refresh complete
start with sysdate next sysdate+2
as
select * from baseuser
建议楼主先用cenlmmx(学海无涯苦作舟) 的方法测试下还可以用增量刷新的方式,但需要在源表上建立日志表