【问题标题】:Oracle - Materialized View, can this MV be fast refreshable?Oracle——物化视图,这个MV可以快速刷新吗?
【发布时间】:2011-10-20 00:39:23
【问题描述】:

我有一个类似于以下内容的物化视图,我想知道是否有任何方法可以让这个物化视图“快速”刷新?基本上,我要问的是:

  1. 物化视图是否可以包含诸如 COALESCE、NVL、NVL2 等 Oracle 函数并且仍然可以快速刷新

  2. 物化视图是否可以包含我制作的功能并且仍然可以快速刷新。

  3. 物化视图是否可以包含与派生表的连接并且仍然可以快速刷新?

我检查了Oracle documentation 关于这个,它没有列出这些限制,但是在我自己的系统上测试了下面的案例之后,我不相信这是可能的。

Oracle 版本:10g

SELECT COALESCE (col1, col2),
       myOracleFunction(col3, col4)
  FROM tableA a 
       LEFT OUTER JOIN
       (SELECT   id, MAX (sample_key) prim_sam_key
            FROM table_sample
        GROUP BY id
          HAVING COUNT (1) = 1) b ON a.id = b.id;

【问题讨论】:

    标签: oracle oracle10g materialized-views


    【解决方案1】:

    您缺少的来自link you provided 的要求:

    • 必须指定COUNT(*)。
    • SELECT 列表必须包含所有 GROUP BY 列。

    此外,以下要求表明,对于您的查询,只有在 table_sample 已更新但 tableA 未更新时,才能进行快速刷新:

    • 具有外部连接的物化聚合视图可快速刷新 在常规 DML 和直接加载之后,仅提供外部表 已修改。此外,连接上必须存在唯一约束 内连接表的列。如果有外连接,所有 连接必须通过 AND 连接并且必须使用等式 (=) 运算符。

    最后,当询问具体化视图时,最好准确说明您创建了哪些具体化视图日志。

    【讨论】:

      猜你喜欢
      • 2020-03-13
      • 2015-06-13
      • 2020-02-27
      • 1970-01-01
      • 1970-01-01
      • 2013-12-04
      • 2013-06-28
      • 2012-07-04
      • 2018-09-04
      相关资源
      最近更新 更多