Anda dapat menggunakan Jelaskan untuk menunjukkan bagaimana pengoptimal kueri akan menangani kueri Anda.
http://www.postgresql.org/docs/9.2/static /sql-explain.html
Dalam kasus di atas, PSQL akan melihat bahwa temp3 tidak digunakan dan tidak menyertakannya.
menggunakan contoh Anda di atas pada salah satu dbs saya.
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)
Anda tidak akan melihat menyebutkan temp3. Dalam menjawab suntingan Anda, tentang mengapa itu tidak memengaruhi waktu kueri, pengoptimal cukup pintar untuk melihat bahwa itu tidak digunakan dan tidak repot menghitungnya. Oleh karena itu alasannya adalah pengoptimal.