Select 中使用 UDF 的视图刷新物化视图

Materialized view refresh from view with UDF's in Select

我们有一个正在从视图刷新的物化视图,但刷新时间约为 1 小时。为了可用性,我们需要大幅缩短时间。 该视图有 26 列,其中 25 列来自用户定义的函数,这些函数封装了有关每一列的公司业务逻辑。物化视图有15000行,刷新完成

我曾尝试使用 PRAGMA UDF 来获得性能提升,并且看到几乎可以忽略不计的改进(PRAGMA UDF 也已添加到父函数中使用的任何子函数中)。 还尝试从函数中解包业务逻辑并将其直接添加到 SQL,但也没有看到任何改进。

想要一些替代方案 solutions/approaches 的建议,以便在更可接受的刷新时间(最好是 10-20 分钟刷新时间)内实现此目标

一次完整刷新涉及大约 375,000 次函数调用(15,000 行 x 每行 25 次函数调用)。如果您正在进行串行刷新,则 3600 秒内 375,000 次函数调用大约是每次函数执行 10 毫秒。可能有一些方法可以优化函数调用,例如确保您不会在不同的函数中多次加入相同的 table。如果您正在进行串行刷新,最简单的选择可能是在实体化视图上放置 PARALLEL 4PARALLEL 8,以便刷新可以 运行 跨越后台的多个会话。