CREATE table events ( ID int not null primary key,event_date date,...)
我意识到90%的查询只访问今天的事件;旧行存储在历史记录中,最终移动到存档表.
但是,事件表仍然很大,我想知道我是否可以通过创建具有WHERE event_date = trunc(sysdate)和event_date索引的物化视图来提高性能?它是否允许?
谢谢
解决方法 是的,这是允许的,请参阅“主键物化视图”:Primary key materialized vIEws may contain a subquery so that you can
create a subset of rows at the remote materialized vIEw site
和“复杂的物化观点”
If you refresh rarely and want faster query performance,then use
Method A (complex materialized vIEw).
If you refresh regularly and can sacrifice query performance,then use Method B (simple materialized vIEw).
在http://download.oracle.com/docs/cd/B10500_01/server.920/a96567/repmview.htm
在你的例子中,很可能恕我直言,这不是一个“复杂的物化视图”:
CREATE MATERIAliZED VIEW events_today REFRESH FAST ASSELECT * FROM EVENT WHERE event_date = trunc(sysdate);
试试吧,看看Oracle是否接受了REFRESH FAST子句.
编辑 – 另一种选择:
根据您的DB Edition(企业分区)和版本(11gR2),您可以使用名为INTERVAL分区的新Oracle功能来定义现有表中的“每日分区”.这样,大多数查询都可以更快地获得更快,而无需有效地复制数据 – 请参阅http://www.oracle.com/technetwork/database/options/partitioning/twp-partitioning-11gr2-2009-09-130569.pdf
总结以上是内存溢出为你收集整理的Oracle物化视图问题全部内容,希望文章能够帮你解决Oracle物化视图问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)