3

编辑:我已经这个问题移到了,dba.stackexchange因为我收到了该社区可以更好地解决我的问题的建议。

我一直在阅读 PostgreSQL 的新 CTE 功能——MATERIALIZED 或 NOT MATERIALIZED 关键字——它可以在某些情况下提供额外的优化机会,前提是这样做是安全的。此处对此 PostgreSQL 更新的评论说:

...用户可以通过指定 MATERIALIZED 来强制旧行为 [LESS OPTIMIZED];当查询故意使用 WITH 作为优化栅栏以防止错误选择计划时,这主要是有用的。

我一直在想,考虑到在某些情况下使用 CTE 优化(NOT MATERIALIZED 关键字)是安全的,在这种情况下,优化程度较低的“MATERIALIZED”关键字可以“防止计划选择不当”,如报价或提供更好的计划?

4

1 回答 1

1

它指的是内联子查询可能导致查询速度慢和 CTE(它作为优化栅栏避免这种情况)。这是一个示例错误

于 2020-03-16T08:08:08.170 回答