Re: Expression transformation curiosity
От | Alexander M. Pravking |
---|---|
Тема | Re: Expression transformation curiosity |
Дата | |
Msg-id | 20030817153938.GA437@dyatel.antar.bryansk.ru обсуждение исходный текст |
Ответ на | Expression transformation curiosity (Richard Huxton <dev@archonet.com>) |
Ответы |
Re: Expression transformation curiosity
|
Список | pgsql-sql |
On Sun, Aug 17, 2003 at 11:32:58AM +0100, Richard Huxton wrote: > I just had a look at EXPLAIN ANALYSE output for an SQL function I'm trying to > write. The WHERE clause wasn't too complex, but the explain output took up a > dozen lines. > > Boiling the problem down, I've looked at a clause of the form: > a OR (b AND c) > which PG converts to: > (a OR b) AND (a OR c) > > Now these two are equivalent, but it would take me forever to demonstrate that > with the full query. I'm happy the planner is going to get it right, but I'm > confused as to why the transformation occurs. > > Is it an artefact of displaying the EXPLAIN, or is it actually processed that > way? You could see how testing "a" twice could be expensive in some > situations. Looks like it actually works this way. I had the same problem several weeks ago on 7.3.3 with 4 such OR's. The final filter became monsterous, and the query was very slow. I've simply rewritten the query using UNION, and it became much faster. -- Fduch M. Pravking
В списке pgsql-sql по дате отправления: