【问题标题】:Does /*+ENABLE_WITH_CLAUSE_MATERIALIZATION */ work inside of a view creation in vertica?/*+ENABLE_WITH_CLAUSE_MATERIALIZATION */ 在 vertica 的视图创建中工作吗?
【发布时间】:2021-12-21 18:51:30
【问题描述】:

我有一个非常复杂的 SQL,它以 Vertica 中的 WITH 语句开头。由于资源限制,它在没有实现的情况下失败,但在实现后运行时间

create view view_name as
with /*+ENABLE_WITH_CLAUSE_MATERIALIZATION */  
report_quarters as 

【问题讨论】:

    标签: sql vertica sql-view


    【解决方案1】:

    来自 Vertica 文档的这一部分:

    https://www.vertica.com/docs/10.1.x/HTML/Content/Authoring/SQLReferenceManual/Statements/CREATEVIEW.htm

    创建视图

    定义视图。视图是只读的,因此它们不支持插入、更新、删除或复制操作。

    /*+ENABLE_WITH_CLAUSE_MATERIALIZATION */ 提示实际上会在后台触发 CREATE LOCAL TEMPORARY TABLE ... 进程。这不仅涉及DML,如插入、更新、删除和复制,还涉及DDL。这就是为什么目前不支持它的原因。

    从版本 11.0.1 开始,一种可能的解决方法可能是使用以下存储过程:

    • 从您要实现的 WITH 子句中创建一个 LOCAL TEMPORARY TABLE
    • 使用 `CREATE TABLE new AS SELECT ..FROM temp_table 等创建目标表。

    最终用户可以调用存储过程,然后从新创建的表中进行选择。

    【讨论】:

    • 谢谢。我想确保我没有遗漏一些明显的东西。我现在不得不走临时表路线。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多