Re: Query tuning - Mailing list pgsql-sql

From Simon Riggs
Subject Re: Query tuning
Date
Msg-id 1210954389.18922.56.camel@ebony.site
Whole thread Raw
In response to Re: Query tuning  ("Scott Marlowe" <scott.marlowe@gmail.com>)
List pgsql-sql
On Fri, 2008-05-16 at 09:21 -0600, Scott Marlowe wrote:
> On Thu, May 15, 2008 at 12:00 AM,  <kapil.munish@wipro.com> wrote:
> > Hi,
> >
> > select count(distinct(j.JOBID)) as jobCount
> > from  JOB_TYPE_FIRST a, JOB_TYPE_SECOND b, JOB_ALLOCATION_WORKLIST j
> > where (( a.JOBID = j.JOBID)
> > and (a.BOOK_ID = :bookId))
> > or ((b.JOBID = j.JOBID)
> > and (b.BOOK_ID = :bookId));
> 
> Have you tried joining a with j and b with j separately, and then
> doing a union on those two sets?

That seems the only way to get a sane answer to this query, which is
otherwise an unconstrained join on both sides of the OR. Great example
of a query which runs slow because the question is phrased incorrectly.
Count(distinct) is pretty much the only function that will give the same
answer as a correctly phrased query.

-- Simon Riggs           www.2ndQuadrant.comPostgreSQL Training, Services and Support



pgsql-sql by date:

Previous
From: "Scott Marlowe"
Date:
Subject: Re: Query tuning
Next
From: Chris Browne
Date:
Subject: Re: Find all instances of a column in the entire database.