Re: query optimization scenarios 17,701 times faster!!! - Mailing list pgsql-hackers

From Robert Dyas
Subject Re: query optimization scenarios 17,701 times faster!!!
Date
Msg-id MGEFJOBFIEAIADIKAMEKKEJJCIAA.rdyas@adelphia.net
Whole thread Raw
In response to Re: query optimization scenarios 17,701 times faster!!!  (Kurt Roeckx <Q@ping.be>)
Responses Re: query optimization scenarios 17,701 times faster!!!  (Stephan Szabo <sszabo@megazone23.bigpanda.com>)
List pgsql-hackers
I was hoping to point out an extreme example in hopes of showing that some
very important optimizations are not taking place.

In a perfect world, two different queries that must by definition return the
same result would run the exact same query plan, which would be the fastest
one available. Yes, I know I'm stating the obvious, but sometimes that
helps.

There are some basic optimizations that I think may not be taking place that
could have a dramatic impact in many different scenarios. The biggest one
that I can see could be stated like this: "if a where clause includes a
restriction on a primary key column with a fixed value, only that row should
be used in subsequent query processing"

Conceptually that seems like an "easy win" for improving performance,
possibly very significantly in a wide variety of circumstances.


-----Original Message-----
From: Q@ping.be [mailto:Q@ping.be]
Sent: Thursday, April 24, 2003 2:08 PM
To: Robert Dyas
Cc: pgsql-hackers@postgresql.org
Subject: Re: [HACKERS] query optimization scenarios 17,701 times
faster!!!


On Wed, Apr 23, 2003 at 02:04:02PM -0400, Robert Dyas wrote:
>
> The following is a list of query pairs (one fast, one slow) that must
> produce identical results by definition (and do), but have very different
> execution times.

I think what you see is what is described in the documentation
too.  If you use outer joins, it will do them in the order of the
query.  I think the reason for that was that the SQL standard
required it.

So if you put your query in an other order, you will get a
different result.

I believe that they removed that restriction in the last/cvs
version of PosgresQL.

> Especially the last example.

Where it's joining alot of tables it doesn't use in the first
place.  You even removed the conditions on how to join the
tables.


Kurt



pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: close() vs. closesocket()
Next
From: Stephan Szabo
Date:
Subject: Re: query optimization scenarios 17,701 times faster!!!