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

时间:2014-11-10 20:36:01

标签: postgresql

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

1 个答案:

答案 0 :(得分:35)

A" CTE扫描"是对CTE术语的具体化结果的顺序扫描(像WITH blah AS (SELECT ...)这样的CTE中的命名部分,如#34; blah"

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

主要含义是从CTE术语中选择一个小子集并丢弃其余部分会造成大量浪费,因为您丢弃的部分仍必须完全计算。

有关详细信息,请参阅a recent blog post I wrote on the topic