linux view 刷新,建立快速刷新的物化视图(materialized view)

1.建表

create table t(

code    varchar(10),

name    varchar(20),

id        varchar(40) primary key);

2.插入数据:

insert into t(code, name, id) values('001', 'test1', '001');

insert into

t(code, name, id) values('002', 'test2', '002');

commit;

3.创建materialized view log

create materialized view log on t with primary key,rowid, sequence (name)

including new values;

4.创建materialized view

create materialized view t_mv

build immediate

refresh fast

on commit

enable query rewrite

as

select name, id

from

t;

5.测试:

update t set name=upper(name);

commit;

select * from t;

select * from t_mv;

对于含有聚合函数的物化视图,必须含有count(*)作为快速刷新的保证,同时在物化视对应的基表上创建物化视图日志,

日志至少包含所有在物化视图出现的字段:

create materialized view test_mv

build immediate

refresh fast on commit

enable query rewrite

as

select

sum(amount), count(*), count(amount), prod_id

from sales

group by prod_id;

其中count(*), count(amount)用于快速刷新的重要条件,

用dbms_advisor.tune_mview生成创建物化视图的语法

例如:select distinct code, name from t;

set serveroutput on;

declare

task_namevarchar(40);

my_sqlvarchar(1000);

begin

my_sql := 'create materialized view t_mv' ||

'  refresh fast' ||

'  as' ||

'  select distinct code, name from t' ;

dbms_advisor.tune_mview(task_name, my_sql);

dbms_output.put_line(task_name);

end;

/

set long 9999999;

select statement

from dba_tune_mview

where  task_name ='XXX';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值