можете да използвате Обяснение, за да покажете как оптимизаторът на заявки ще се справи с вашата заявка.
http://www.postgresql.org/docs/9.2/static /sql-explain.html
В горния случай PSQL трябва да види, че temp3 не се използва и да не го включва.
като използвам вашия пример по-горе на един мой 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)
няма да забележите, че не се споменава temp3. В отговор на вашата редакция, защо не влияе на времето за заявка, оптимизаторът е достатъчно умен, за да види, че не се използва и не си прави труда да го изчислява. Оттук и причината да е оптимизатор.