【问题标题】:Creating Materialized view in oracle taking forever在 oracle 中创建物化视图永远
【发布时间】:2017-01-18 08:35:06
【问题描述】:

我有以下查询,其中包含在 5 秒内返回数据的选择查询。但是当我在前面添加创建物化视图命令时,查询需要永远创建物化视图。

【问题讨论】:

    标签: oracle oracle11g


    【解决方案1】:

    创建物化视图时,实际上是创建了 Oracle 负责保持同步的数据副本(它使这些视图有点像索引)。如果您的视图对大量数据或来自其他服务器的数据进行操作,那么创建此视图自然会花费一些时间。

    来自docs.oracle.com:

    物化视图是目标主控从单个 时间点。

    【讨论】:

    • 为什么查询时间小却没有查看创建时间。我的查询在链接服务器上运行
    • @Kitex,我不能 100% 确定,因为它取决于许多变量,但一个可能的原因可能是本地数据存储限制。其他原因可能是因为您的视图针对大量数据,而您的查询针对这些数据的子集。
    • 或者因为您正在计时第一行数据的到达,但构建 MV 依赖于接收所有数据。这也可能导致不同的执行计划。
    • @DavidAldridge 计时第一行数据的到达?
    • 执行查询时,可能会在几秒钟内将第一行数据返回给客户端,但查询可能需要几分钟才能完成。请注意将检索所有数据的时间与创建物化视图的时间进行比较。
    【解决方案2】:

    只是为了“yuks”,试试 create table temp_tab nologging as select ...

    我见过一些由于某种原因导致 MV 创建时间过长的情况,可能是日志记录。

    此外,查询开发工具有时会立即开始将数据返回到屏幕,但如果您“分页”到最后一行,您会发现获取所有数据真正需要多长时间。

    您应该使用说明计划分析 select 语句,并了解表基数、索引、运行时的等待状态……以便查看查询是否需要调整。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-25
      • 2021-05-19
      • 2020-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-04
      • 1970-01-01
      相关资源
      最近更新 更多