I'm looking a hint for new application dynamic query builder creation for
PostgreSQL 8.0+
Following two queries return same results:
SELECT ...
FROM t1 JOIN t2 USING (cx)
LEFT JOIN t3 USING (cy)
LEFT JOIN t4 USING (cz)
WHERE ...
and
SELECT ...
FROM (SELECT * FROM t1 JOIN t2 USING (cx) LEFT JOIN t3 USING (cy) WHERE
... ) p1
LEFT JOIN t4 USING (cz)
WHERE ...
Second query is easier to generate but contains two where clauses which
produce logically same resultset and in first query.
So it is preferable to use second form. However I'm not clear how this
affects query perfomance.
Questions:
Will execution speed of both queries be the same ?
Will 8.0+ optimizers create same execution plan for those queries ?
Andrus.