Skip site navigation (1) Skip section navigation (2)

Re: Query optimization problem

From: Yeb Havinga <yebhavinga(at)gmail(dot)com>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Dimitri Fontaine <dfontaine(at)hi-media(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Zotov <zotov(at)oe-it(dot)ru>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: Query optimization problem
Date: 2010-07-28 11:24:56
Message-ID: 4C501388.3010301@gmail.com (view raw or flat)
Thread:
Lists: pgsql-hackers
Robert Haas wrote:
> On Wed, Jul 28, 2010 at 6:55 AM, Dimitri Fontaine
> <dfontaine(at)hi-media(dot)com> wrote:
>   
>> Robert Haas <robertmhaas(at)gmail(dot)com> writes:
>>     
>>>  But here you want to have different paths for
>>> the same relation that generate *different output*, and the planner
>>> doesn't understand that concept.
>>>       
>> Sorry? I though what Equivalence Class provides is the "proving" that
>> using this qualification or another will *not* affect the output.
>>     
>
> In a query like...
>
>  SELECT d1.ID, d2.ID
>  FROM DocPrimary d1
>    JOIN DocPrimary d2 ON d2.BasedOn=d1.ID
>  WHERE (d1.ID=234409763) or (d2.ID=234409763)
>
> ...you're going to scan d1, scan d2, and then join the results.  The
> scan of d1 is going to produce different results depending on whether
> you evaluate or not d1.ID=234409763, and the scan of d2 is going to
> produce different results depending on whether or not you evaluate
> d2.BasedOn=234409763.
>   
Wouldn't it be relatively easy, to rewrite the filter expression by 
adding expressions, instead of replacing constants, in the disjunctive 
case, so the example at hand would become:

WHERE (d1.ID=234409763) or (d2.ID=234409763)
AND (d2.BasedOnID=234409763) or (d2.ID=234409763)

regards,
Yeb Havinga


In response to

Responses

pgsql-hackers by date

Next:From: Robert HaasDate: 2010-07-28 11:29:43
Subject: Re: page corruption on 8.3+ that makes it to standby
Previous:From: Mark Cave-AylandDate: 2010-07-28 11:22:29
Subject: Re: PostGIS vs. PGXS in 9.0beta3

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group