我有一个(可能)关于 Postgres 如何执行包含WITH
子句的查询的基本问题。我想知道是否在WITH
子句中包含无关表实际上会减慢查询速度。也就是说,如果在WITH
子句中创建的“临时”表从未在子句之外调用WITH
,那么该“临时”表是否真的创建了?
在第一个示例中,我加入了两个使用WITH
子句创建的“临时”表:
--Example 1
WITH temp1 as (
SELECT * from table_1
),
temp2 as (
select * from table_2
)
select *
from temp1
join temp2;
在第二个示例中,我正在执行完全相同的查询,只是在WITH
子句中创建了一个无关的表“temp3”。
--Example 2
WITH temp1 as (
SELECT * from table_1
),
temp2 as (
select * from table_2
),
temp3 as (
select * from table_3
)
select *
from temp1
join temp2;
这两个查询之间有任何性能差异吗?如果table_3
是一个巨大的表,这会减慢示例 2 与示例 1 中的查询吗?如果不是,为什么不呢?
好像不影响查询时间。不过我还是很好奇为什么...