【发布时间】:2021-12-21 18:51:30
【问题描述】:
我有一个非常复杂的 SQL,它以 Vertica 中的 WITH 语句开头。由于资源限制,它在没有实现的情况下失败,但在实现后运行时间
create view view_name as
with /*+ENABLE_WITH_CLAUSE_MATERIALIZATION */
report_quarters as
【问题讨论】:
我有一个非常复杂的 SQL,它以 Vertica 中的 WITH 语句开头。由于资源限制,它在没有实现的情况下失败,但在实现后运行时间
create view view_name as
with /*+ENABLE_WITH_CLAUSE_MATERIALIZATION */
report_quarters as
【问题讨论】:
来自 Vertica 文档的这一部分:
创建视图
定义视图。视图是只读的,因此它们不支持插入、更新、删除或复制操作。
/*+ENABLE_WITH_CLAUSE_MATERIALIZATION */ 提示实际上会在后台触发 CREATE LOCAL TEMPORARY TABLE ... 进程。这不仅涉及DML,如插入、更新、删除和复制,还涉及DDL。这就是为什么目前不支持它的原因。
从版本 11.0.1 开始,一种可能的解决方法可能是使用以下存储过程:
LOCAL TEMPORARY TABLE。最终用户可以调用存储过程,然后从新创建的表中进行选择。
【讨论】: