加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 湛江站长网 (https://www.0759zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Oracle物化视图问题

发布时间:2021-01-17 19:20:58 所属栏目:站长百科 来源:网络整理
导读:例如,我有一个表格,其中包含有关不同事件的信息 CREATE TABLE events ( id int not null primary key,event_date date,...) 我意识到90%的查询只访问今天的事件;旧行存储在历史记录中,最终移动到存档表. 但是,事件表仍然很大,我想知道我是否可以通过创建

例如,我有一个表格,其中包含有关不同事件的信息

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 AS
SELECT * 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

(编辑:PHP编程网 - 湛江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!