postgresql 什么是CTE扫描,它对性能有什么影响?

cgfeq70w  于 2023-06-05  发布在  PostgreSQL
关注(0)|答案(1)|浏览(609)

我试图用EXPLAIN ANALYZE诊断一个慢查询。我是新手,所以我读了http://www.postgresql.org/docs/9.3/static/using-explain.html。查询计划使用“CTE扫描”,但我不知道它与顺序扫描相比是什么,更重要的是,CTE扫描通常对查询性能意味着什么。

nvbavucw

nvbavucw1#

“CTE扫描”是对CTE项的具体化结果的顺序扫描(如WITH blah AS (SELECT ...)等CTE中的“blah”等命名部分)。

  • 物化 * 意味着PostgreSQL已经计算了结果并将它们转换为行的临时存储,它不仅仅是像视图一样使用CTE。

其主要含义是,从CTE项中选择一个小子集并丢弃其余部分可能会浪费大量工作,因为您丢弃的部分仍然必须完全计算。
有关详细信息,请参见a recent blog post I wrote on the topic

相关问题