WITH
Postgres が句を含むクエリを実行する方法について (おそらく) 基本的な質問があります。WITH
余分なテーブルを句に含めると、実際にクエリが遅くなるかどうか疑問に思っています。つまり、WITH
句で作成された「一時」テーブルが句の外で呼び出されないWITH
場合、その「一時」テーブルは実際に作成されますか?
WITH
最初の例では、句を使用して作成された 2 つの「一時」テーブルを結合しています。
--Example 1
WITH temp1 as (
SELECT * from table_1
),
temp2 as (
select * from table_2
)
select *
from temp1
join temp2;
2 番目の例では、まったく同じクエリを実行していますが、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;
これら 2 つのクエリにパフォーマンスの違いはありますか? が巨大なテーブルの場合table_3
、例 2 と例 1 のクエリは遅くなりますか? そうでない場合、なぜですか?
クエリ時間には影響しないようです。その理由は今でも気になるところですが…