diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2001-02-19 00:24:30 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2001-02-19 00:24:30 +0000 |
commit | a276392e5223a9cdb3160ecde8e4baa43e45cd66 (patch) | |
tree | f4cff3d520cc5ba95de51cf539edfbd49cbb0745 /doc/src | |
parent | fa0cd643d2cb3dcf122d2fbda9a9c02d94cd006e (diff) |
Update example of partially constraining join order to use a subselect
in FROM instead of an auxiliary view. We didn't have subselect-in-FROM
when I wrote this originally...
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/perform.sgml | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/doc/src/sgml/perform.sgml b/doc/src/sgml/perform.sgml index 897073742bf..35ed28875f6 100644 --- a/doc/src/sgml/perform.sgml +++ b/doc/src/sgml/perform.sgml @@ -1,5 +1,5 @@ <!-- -$Header: /cvsroot/pgsql/doc/src/sgml/perform.sgml,v 1.1 2000/12/16 02:29:36 tgl Exp $ +$Header: /cvsroot/pgsql/doc/src/sgml/perform.sgml,v 1.2 2001/02/19 00:24:30 tgl Exp $ --> <chapter id="performance-tips"> @@ -350,10 +350,11 @@ SELECT * FROM a CROSS JOIN b, c, d, e WHERE ...; might not want to constrain the planner's search for a good ordering of inner joins inside an outer join. You can't do that directly in the JOIN syntax, but you can get around the syntactic limitation by using - views. For example, + subselects. For example, <programlisting> -CREATE VIEW v1 AS SELECT ... FROM a, b, c WHERE ...; -SELECT * FROM d LEFT JOIN v1 ON (...); +SELECT * FROM d LEFT JOIN + (SELECT * FROM a, b, c WHERE ...) AS ss + ON (...); </programlisting> Here, joining D must be the last step in the query plan, but the planner is free to consider various join orders for A,B,C. @@ -397,7 +398,7 @@ SELECT * FROM d LEFT JOIN v1 ON (...); command, instead of a series of INSERT commands. This reduces parsing, planning, etc overhead a great deal. If you do this then it's not necessary to fool - around with autocommit. + around with autocommit, since it's only one command anyway. </para> </sect2> |