postgresql - PostgreSQL 12 CTE 物化选项何时提供优化优势?
问题描述
编辑:我已经将这个问题移到了,dba.stackexchange
因为我收到了该社区可以更好地解决我的问题的建议。
我一直在阅读 PostgreSQL 的新 CTE 功能——MATERIALIZED 或 NOT MATERIALIZED 关键字——它可以在某些情况下提供额外的优化机会,前提是这样做是安全的。此处对此 PostgreSQL 更新的评论说:
...用户可以通过指定 MATERIALIZED 来强制旧行为 [LESS OPTIMIZED];当查询故意使用 WITH 作为优化栅栏以防止错误选择计划时,这主要是有用的。
我一直在想,考虑到在某些情况下使用 CTE 优化(NOT MATERIALIZED 关键字)是安全的,在这种情况下,优化程度较低的“MATERIALIZED”关键字可以“防止计划选择不当”,如报价或提供更好的计划?
解决方案
它指的是内联子查询可能导致查询速度慢和 CTE(它作为优化栅栏避免这种情况)。这是一个示例错误。
推荐阅读
- c++ - C++中向量和矩阵的乘法
- python - 如何测试创建 Celery 任务的代码?
- java - 将容器连接到mysql数据库并访问它
- angular - show navigation only in inner pages and not on login/registration pages
- flutter - 如何实现 Flutter 功能
- gmail-api - 请Gmail API html帖子示例
- java - 识别来自 git 存储库的参数更改
- android - Multiple checkbox state
- unit-testing - How to implement stub in Golang? And what difference between stub and mock?
- python - 如何获得shopify商店产品