暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 实体化视图刷新时间比创建表花费的时间更长。

askTom 2017-07-24
244

问题描述

嗨!
我的数据库有2个模式。在SCHEMA_ONE上,我有一个视图,在3秒内运行以返回420.000行。
在schema_2中,我有一个具体化的视图,我总是这样删除和重新创建:

创建物化视图my_mat_view_name
刷新完成
作为
从SCHEMA_ONE.my_view_name中选择 *;


上面的脚本需要10:30分钟才能完成。
如果我只是创建一个像下面这样的表格,它需要1秒。
创建表my_table_name
作为
从SCHEMA_ONE.my_view_name中选择 *


为什么我在两个脚本之间有很大的不同?我想使matview脚本运行速度与第二个脚本一样快。

专家解答

尝试这样的事情来追踪活动

--
-- my sample table (you would use your real table)
--
SQL> create table t as select d.* from dba_objects d,
  2    ( select 1 from dual connect by level <= 20 ) ;

Table created.

SQL>
SQL> exec dbms_monitor.session_trace_enable(waits=>true);

PL/SQL procedure successfully completed.

SQL>
SQL> CREATE MATERIALIZED VIEW my_mat_view_name
  2  REFRESH COMPLETE
  3  AS
  4  SELECT * FROM mcdonac.t;

Materialized view created.

SQL>
SQL> exec dbms_monitor.session_trace_disable;

PL/SQL procedure successfully completed.
复制



在我的跟踪文件中,我最终看到以下内容:

光标解析 #2638142355840 len = 69 dep = 1 uid = 1 10月07日 = 1 lid = 107 tim = 728811237493 hv = 3922666197 ad = '7ff958e77c50' sqlid = '889f2u7nwy8qp'
创建表 “MCDONAC”。“MY_MAT_VIEW_NAME” 作为选择 * 来自mcdonac.t
STMT结束


因此,您可以看到,无论如何,我们几乎都在进行相同的操作。但是运行跟踪,然后在跟踪文件上运行tkprof,看看您在哪里浪费时间。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论