快速刷新的物化视图创建比较麻烦,限制条件比较多,本文参考Oracle 11g 11.2版本官方文档,总结一般情况、含有联接、含有聚合计算、UNION ALL等情况下的限制条件。
所有快速刷新的物化视图都必须满足的条件
定义物化视图的查询语句限制如下:
- 1.物化视图中不能含有非重复表达式的引用,例如
SYSDATE
和ROWNUM
. - 2.物化视图中不能出现
RAW
或LONG RAW
数据类型的引用。 - 3.查询语句的
SELECT
部分语不能出现子查询。 - 4.
SELECT
子句部分不能包含分析性质的函数,例如RANK
。 - 5.不能含有
MODEL
子句。 - 6.子查询中不能含有
HAVING
子句。 - 7.不能出现含有
ANY
,ALL
或NOT EXISTS
的嵌套子查询。 - 8.不能含有
[START WITH …] CONNECT BY
子句。 - 9.不能包含不同站点的多个明细表。
- 10.
ON COMMIT
刷新方式的物化视图不能有远程明细表的引用。 - 11.嵌套物化视图必须含有表联接或者聚合计算。
- 12.物化视图包含联接和
GROUP BY
子句的聚合计算时,不能select from 一个有索引的表。
只包含联接的物化视图快速刷新限制条件
定义物化视图的查询语句只含有联接且没有聚合计算,实现