du kan bruge Explain til at vise, hvordan forespørgselsoptimeringsværktøjet håndterer din forespørgsel.
http://www.postgresql.org/docs/9.2/static /sql-explain.html
I ovenstående tilfælde skal PSQL se, at temp3 ikke bruges og ikke inkludere det.
ved at bruge dit eksempel ovenfor på en min dbs.
explain with temp1 as (select * from cidrs), temp2 as (select * from contacts), temp3 as ( select * from accounts ) select * from temp1 join temp2 on temp1.id = temp2.id;
QUERY PLAN
---------------------------------------------------------------------
Hash Join (cost=22.15..25.44 rows=20 width=4174)
Hash Cond: (temp1.id = temp2.id)
CTE temp1
-> Seq Scan on cidrs (cost=0.00..11.30 rows=130 width=588)
CTE temp2
-> Seq Scan on contacts (cost=0.00..10.20 rows=20 width=3586)
-> CTE Scan on temp1 (cost=0.00..2.60 rows=130 width=588)
-> Hash (cost=0.40..0.40 rows=20 width=3586)
-> CTE Scan on temp2 (cost=0.00..0.40 rows=20 width=3586)
(9 rows)
du vil ikke bemærke nogen omtale af temp3. Når du besvarer din redigering, om hvorfor det ikke påvirker forespørgselstiden, er optimeringsværktøjet smart nok til at se, at det ikke bliver brugt og ikke gider at beregne det. Derfor er det grunden til, at det er en optimizer.