我正在尝试使用左外连接和group by创建一个物化视图 .
我收到这个错误:
错误报告 - ORA-12015:无法从复杂查询创建快速刷新物化视图12015. 00000 - “无法从复杂查询创建快速刷新物化视图”原因:复杂查询不支持ROWID和主键约束 . 操作:使用REFRESH FORCE或REFRESH COMPLETE选项重新发出该命令,或创建一个简单的物化视图 .
代码:
CREATE MATERIALIZED VIEW CSPRD.MV_LLATTRDATA_MAX_VERSIONS
PARALLEL 16
USING INDEX
REFRESH
NEXT trunc(SYSDATE, 'hh') + 1/24
FAST
WITH ROWID
USING DEFAULT LOCAL ROLLBACK SEGMENT
ENABLE QUERY REWRITE
AS
SELECT /*+ PARALLEL(16) */
AD.ID,
AD.DEFID,
AD.ATTRID,
MAX(AD.VERNUM) MAX_VERNUM,
MAX(AD.DEFVERN) MAX_DEFVERN,
AD.ROWID,
DT.ROWID
FROM csprd.mv_llattrdata_shrunk_v1 AD, MV_DTREECORE_SHRUNK_V2 DT
WHERE AD.ID = DT.DATAID(+)
GROUP BY AD.ID, AD.DEFID, AD.ATTRID;
1 回答
并行的东西表明这些是大表 . 所以我建议你使用"prebuilt table"使用parallel进行实例化,然后切换到串行进行快速刷新 - 因为快速刷新期间的重载并行似乎是反直觉的 .
确保您的mview日志包含正确类型的信息 - 然后应该可以进行外部联接 .
您可以使用DBMS_MVIEW.EXPLAIN_MVIEW来提前评估mview的各种功能 .