甲骨文之间的子句导致ORA-12015:无法从复杂的查询创建快速刷新的物化视图

时间:2018-06-29 08:56:39

标签: oracle materialized-views

我使用脚本成功创建了一个物化视图:

CREATE MATERIALIZED VIEW orderitem_mvmt
BUILD IMMEDIATE
REFRESH FAST
ON DEMAND
AS
select * from order_item;

试图提高性能,我会这样改变

CREATE MATERIALIZED VIEW orderitem_mvmt
BUILD IMMEDIATE
REFRESH FAST
ON DEMAND
AS
select * from order_item
where to_char(last_upd,'yyyy') between to_char(sysdate,'yyyy')-3 and  to_char(sysdate,'yyyy')+3;

运行脚本会引发错误 ORA-12015:无法通过复杂的查询创建快速刷新的物化视图

我不太了解它与快速刷新Restrictions

的匹配程度

谢谢。

1 个答案:

答案 0 :(得分:4)

看看General Restrictions on Fast Refresh

  

实例化视图的定义查询受到如下限制:

     
      
  • 物化视图不得包含对非重复表达式的引用,例如SYSDATE和ROWNUM。

  •   
  • 实例化视图不得包含对RAW或LONG RAW数据类型的引用。

  •   
  • 它不能包含SELECT列表子查询。

  •   
  • 在SELECT子句中不能包含分析函数(例如RANK)。

  •   
  • 它不能包含MODEL子句。

  •   
  • 它不能包含带有子查询的HAVING子句。

  •   
  • 它不能包含具有ANY,ALL或NOT EXISTS的嵌套查询。

  •   
  • 它不能包含[START WITH…] CONNECT BY子句。

  •   
  • 它不能包含位于不同站点的多个明细表。

  •   
  • ON COMMIT实例化视图不能具有远程明细表。

  •   
  • 嵌套的实例化视图必须具有联接或聚集。

  •   
  • 带有GROUP BY子句的物化联接视图和物化聚合视图不能从索引组织的表中选择。

  •   

您的查询包含SYSDATE,因此您不能将其用于FAST REFRESH