pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Kevin Grittner <Kevin.Grittner@wicourts.gov>
To: pgsql-performance@postgresql.org
To: dario_d_s@unitech.com.ar
Subject: Re: join and query planner
Date: Mon, 18 Jul 2005 15:47:34 -0500
Message-ID: <s2dbcf1d.005@gwmta.wicourts.gov> (raw)

You might want to set join_collapse_limit high, and use the JOIN
operators rather than the comma-separated lists.  We generate the WHERE
clause on the fly, based on user input, and this has worked well for us.
 
-Kevin
 
 
>>> "Dario" <dario_d_s@unitech.com.ar> 07/18/05 2:24 PM >>>
Hi.

> Just out of curiosity, does it do any better with the following?
>
>    SELECT ...

Yes, it does.

But my query could also be
    SELECT ...
     FROM a
     JOIN b ON (a.key = b.key)
     LEFT JOIN c ON (c.key = a.key)
     LEFT JOIN d ON (d.key=a.key)
/*new*/ , e
     WHERE (b.column <= 100)
/*new*/  and (e.key = a.key) and (e.field = 'filter')

because it's constructed by an application. I needed to know if,
somehow,
someway, I can "unforce" join order.
The only way to solve it so far is changing application. It must build
something like

    SELECT ...
     FROM b
     JOIN (a JOIN e ON (e.key = a.key)) ON (a.key = b.key)
     LEFT JOIN c ON (c.key = a.key)
     LEFT JOIN d ON (d.key=a.key)
     WHERE (b.column <= 100) and (e.field = 'filter')

Supossed that e.field has (should have) better selectivity. But now this
problem belongs to programmer's group :-)

The query, in fact, has more tables to join. I wonder if lowering geqo
threshold could do the work...

Thank you. Greetings. Long life, little spam and prosperity!


-----Mensaje original-----
De: pgsql-performance-owner@postgresql.org
[mailto:pgsql-performance-owner@postgresql.org]En nombre de Kevin
Grittner
Enviado el: lunes, 18 de julio de 2005 14:58
Para: pgsql-performance@postgresql.org; dariop@unitech.com.ar
Asunto: Re: [PERFORM] join and query planner


Just out of curiosity, does it do any better with the following?

    SELECT ...
     FROM a
     JOIN b ON (a.key = b.key)
     LEFT JOIN c ON (c.key = a.key)
     LEFT JOIN d ON (d.key=a.key)
     WHERE (b.column <= 100)


>>> snipp


---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings




view thread (9+ messages)  latest in thread

Message-ID: <s2dbcf1d.005@gwmta.wicourts.gov>
Permalink:  ../s2dbcf1d.005@gwmta.wicourts.gov/
Also on:    postgresql.org/message-id/s2dbcf1d.005@gwmta.wicourts.gov

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-performance@postgresql.org
  Cc: Kevin.Grittner@wicourts.gov, dario_d_s@unitech.com.ar
  Subject: Re: join and query planner
  In-Reply-To: <s2dbcf1d.005@gwmta.wicourts.gov>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox