Re: Query optimization problem
От | Yeb Havinga |
---|---|
Тема | Re: Query optimization problem |
Дата | |
Msg-id | 4C501388.3010301@gmail.com обсуждение исходный текст |
Ответ на | Re: Query optimization problem (Robert Haas <robertmhaas@gmail.com>) |
Ответы |
Re: Query optimization problem
|
Список | pgsql-hackers |
Robert Haas wrote: > On Wed, Jul 28, 2010 at 6:55 AM, Dimitri Fontaine > <dfontaine@hi-media.com> wrote: > >> Robert Haas <robertmhaas@gmail.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
В списке pgsql-hackers по дате отправления: