MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 数据库 / 正文

oracle物化视图使用总结和优化索引

2024-11-26 21:14 huorong 数据库 11 ℃ 0 评论

物化视图定义和使用场景

物化视图是一个查询结果的实体表,和视图有本质区别,视图每次查询都是从基本表检索出结果,但物化视图是定时生成的结果,是有实际物理表结构的表。而视图是虚拟表。

典型使用场景:

  • 数据同步:两个业务系统数据库之前的数据共享方案,一般在etl等大数据场景下很常见。
  • 数据备份:对业务数据进行备份, 创建物化视图定时备份,防止数据丢失。
  • 数据一致性要求不高场景下的汇总统计:物化视图是定时刷新结果的,一定时间内有数据不一致问题,但是提升性能有明显效果。

物化视图主要脚本

创建物化视图:

create materialized view MV_ DOP_TEST
REFRESH FORCE ON DEMAND
START WITH TO_DATE('19-11-2019 03:00:00', 'DD-MM-YYYY HH24:MI:SS') NEXT SYSDATE + 60/(24*60) 
AS
select dsso.dop_id,soo.work_center_no,soo.operation_description
from SHOP_ORDER_OPERATION SOO,
DOP_SUPPLY_SHOP_ORD DSSO
where soo.order_no=dsso.order_no
and soo.release_no=dsso.release_no
and soo.sequence_no=dsso.sequence_no;

create materialized view LOG ON MV_ DOP_TEST_log;

删除物化视图:

drop materialized view MV_ DOP_TEST ;
drop materialized view log on MV_ DOP_TEST_log;

物化视图定时规则

start with
sysdate next to_date( concat( to_char( sysdate+1,'dd-mm-yyyy'),' 22:00:00'),'dd-mm-yyyy hh24:mi:ss');

该规则表示每天22点刷新同步物化视图。

物化视图和索引

使用物化视图查询关于索引,很容易产生误区,物化视图也有索引,不过不是直接建立在物化视图上,是通过基本表创建索引,物化视图才会使用索引,否则这个物化视图查询有性能瓶颈。

看一下plsql里用了索引物化视图的ddl:

所以,如果你的物化视图查询慢,可以检查是否有效使用了索引。给物化视图同名的表添加索引即可:

Tags:oracle的优化

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言