0

我正在尝试使用预先构建的视图在 Oracle 中创建物化视图。

  create materialized view bfb_rpt_sch01.mvw_base_sales
  as select * from bfb_rpt_sch01.vw_base_sales;

此命令将不会执行并挂起。我想这可能与未正确编写视图有关。所以我对视图执行了以下查询。

  select count(*) from bfb_rpt_sch01.vw_base_sales

该查询执行大约需要 6 分钟,返回 270 万。这告诉我观点不是问题,但我可能是错的。

4

1 回答 1

1

我设法弄清楚我的问题。与我的 (CREATE TABLE AS) 相比,我的 (CREATE MATERIALIZED VIEW AS) 使用了不同的解释。如果我的代码包含以下代码行,它会像 (CREATE TABLE AS) 一样完全正常运行,但在使用 (CREATE MATERIALIZED VIEW AS) 时它会继续挂起 48 小时以上,然后才会失败。

WHERE a.column_name NOT IN (SELECT b.column_name FROM B) --culprit

我使用以下代码更改了代码,现在可以正常工作了。

WHERE NOT EXISTS (SELECT NULL FROM B WHERE a.column_name = b.column_name) --works

我不确定为什么会发生这种情况,也许是错误?我对 ORACLE 的了解还不够,无法拨打电话。

于 2013-09-13T18:19:52.223 回答