【发布时间】:2019-05-18 03:58:23
【问题描述】:
考虑使用 CTE 的以下格式的查询:
WITH
t1 AS (SELECT some_data1 FROM some_table),
t2 AS (SELECT some_data2 FROM t1)
SELECT some_data3 FROM t2;
问题一:
当查询被执行时,一个临时表t1被完全构建并保存在内存中,然后t2完全基于来自t1的数据构建,然后SELECT可以针对t2运行?
问题 2:
如果t1 和t2 是无法存储在内存中的大表,是否会将它们写入磁盘导致查询速度变慢?
问题 3:
对于大表是否应该避免这种类型的查询?
【问题讨论】:
-
我想向 Craig Ringer 推荐 this awesome article,以进一步了解 CTE 限制。
标签: sql postgresql common-table-expression query-performance