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

最佳答案

“CTE扫描”是CTE术语(在像WITH blah AS (SELECT ...)这样的CTE中的命名部分,例如“blah”)的物化结果的顺序扫描。

物化意味着PostgreSQL已经计算了结果并将其转换为临时的行存储,而不仅仅是像 View 一样使用CTE。

主要含义是从CTE术语中选择一小部分子集并将其丢弃会浪费大量工作,因为您丢弃的部分仍必须进行充分计算。

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

关于postgresql - 什么是CTE扫描及其对性能的影响?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26852535/

10-15 20:41