| From: | "A(dot) Kretschmer" <andreas(dot)kretschmer(at)schollglas(dot)com> |
|---|---|
| To: | pgsql-general(at)postgresql(dot)org |
| Subject: | Re: Are projected queries optimized like nonprojected ones |
| Date: | 2008-10-16 11:55:29 |
| Message-ID: | 20081016115529.GG25000@a-kretschmer.de |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general |
am Thu, dem 16.10.2008, um 14:43:42 +0300 mailte Andrus folgendes:
> 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 ?
You can check this with EXPLAIN ANALYSE <your_query>. I'm guessing it
depends on the PG-Version, recent versions are smarter.
Andreas
--
Andreas Kretschmer
Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header)
GnuPG-ID: 0x3FFF606C, privat 0x7F4584DA http://wwwkeys.de.pgp.net
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Tom Lane | 2008-10-16 12:17:50 | Re: Problems with Timezones in Australia |
| Previous Message | Tom Lane | 2008-10-16 11:55:22 | Re: PQescapestringConn not found in libpq.dll |