3

我有一个看起来有点像下面的物化视图,我想知道是否有任何方法可以让这个物化视图“快速”刷新?基本上,我要问以下问题:

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

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

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

我检查了有关此的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;
4

1 回答 1

2

您提供的链接中缺少的要求:

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

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

  • 在传统的 DML 和直接加载之后,具有外部连接的物化聚合视图可以快速刷新,前提是只修改了外部表。此外,内部连接表的连接列上必须存在唯一约束。如果存在外连接,则所有连接都必须通过 AND 连接,并且必须使用相等 (=) 运算符。

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

于 2011-08-04T19:31:11.707 回答