RE: [HACKERS] Bug on complex subselect (was: Bug on complex join)

Jackson, DeJuan <djackson@cpsgroup.com>

From: "Jackson, DeJuan" <djackson@cpsgroup.com>
To: phd2@earthling.net
Cc: PostgreSQL-development <pgsql-hackers@postgreSQL.org>
Date: 1999-03-11T18:00:32Z
Lists: pgsql-hackers
> Hello!
> 
>    Vadim already gave the idea to use EXISTS. Will try it.
>    Thanks to all who replied!
> 
> On Wed, 10 Mar 1999, Jackson, DeJuan wrote:
> > Try your query this way:
> >  SELECT DISTINCT subsec_id
> >    FROM positions p
> >   WHERE EXISTS(SELECT 1
> >                  FROM central c, shops s, districts d
> >                 WHERE p.pos_id = c.pos_id AND 
> >                       c.shop_id = s.shop_id AND
> >                       s.distr_id = d.distr_id AND
> >                       d.city_id = 2);
> 
> > Make sure you have indexes on pos_id, shop_id, distr_id, 
> and city_id.
> 
>    All these are primary keys in corresponding tables, and hence have
> UNIQUE indicies. Is it enough?
> 
> Oleg.
You should have indexes on both the primary and the referenced table.
(i.e. positions.pos_id and central.pos_id)  It gives PostgreSQL more
options on which join methods to use while still having an index to
reference.

	-DEJ