首页 文章

Oracle - Materialized View,这个MV可以快速刷新吗?

提问于
浏览
3

我有一个看起来有点像下面的物化视图,我想知道是否还有这个物化视图'快速'可刷新?基本上,我问的是:

  • 物化视图是否包含oracle函数,如COALESCE,NVL,NVL2等,并且仍然可以快速刷新

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

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

我检查了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;

1 回答

  • 2

    你错过的link you provided的要求:

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

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

    只有外部表被修改后,具有外部连接的物化聚合视图才能在传统DML和直接加载后快速刷新 . 此外,内部联接表的连接列上必须存在唯一约束 . 如果存在外连接,则所有连接必须通过AND连接,并且必须使用equality(=)运算符 .

    最后,在询问物化视图时,最好准确说明您创建的物化视图日志 .

相关问题