u kunt Explain gebruiken om te laten zien hoe de query-optimizer uw query zal behandelen.
http://www.postgresql.org/docs/9.2/static /sql-explain.html
In het bovenstaande geval zou PSQL moeten zien dat temp3 niet wordt gebruikt en het niet opnemen.
gebruik je voorbeeld hierboven op een van mijn 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)
u zult geen melding maken van temp3. Bij het beantwoorden van uw bewerking, over waarom het geen invloed heeft op de querytijd, is de optimizer slim genoeg om te zien dat het niet wordt gebruikt en neemt het niet de moeite om het te berekenen. Vandaar de reden dat het een optimizer is.