From: Craig A. James <cjames@modgraph-usa.com>
To: pgsql-performance@postgresql.org
Subject: Re: Overriding the optimizer
Date: Thu, 15 Dec 2005 19:57:50 -0800
Message-ID: <43A23B3E.5050809@modgraph-usa.com> (raw)
In-Reply-To: <43A231AA.9070708@paradise.net.nz>
References: <200512141603.52583.blargity@gmail.com>
<7484.1134600423@sss.pgh.pa.us>
<1134629567.14248.27.camel@firebolt>
<200512150148.16125.blargity@gmail.com>
<1134644526.14248.60.camel@firebolt>
<43A1C40D.8040006@paradise.net.nz>
<43A1F6DB.3080805@modgraph-usa.com>
<43A226E7.7040508@paradise.net.nz>
<43A22BE3.6020103@modgraph-usa.com>
<43A231AA.9070708@paradise.net.nz>
> Yeah it would - an implementation I have seen that I like is where the
> developer can supply the *entire* execution plan with a query. This is
> complex enough to make casual use unlikely :-), but provides the ability
> to try out other plans, and also fix that vital query that must run
> today.....
So, to move on to the concrete...
I'm not familiar with the innards of Postgres except in a theoretical way. Maybe this is a totally naive or dumb question, but I have to ask: How hard would it be to essentially turn off the optimizer?
1. Evaluate WHERE clauses left-to-right.
select ... from FOO where A and B and C;
This would just apply the criteria left-to-right, first A, then B, then C. If an index was available it would use it, but only in left-to-right order, i.e. if A had no index but B did, then too bad, you should have written "B and A and C".
2. Evaluate joins left-to-right.
select ... from FOO join BAR on (...) join BAZ on (...) where ...
This would join FOO to BAR, then join the result to BAZ. The only optimization would be to apply relevant "where" conditions to each join before processing the next join.
3. Don't flatten sub-selects
select ... from (select ... from FOO where ...) as X where ...;
This would do the inner select then use the result in the outer select, and wouldn't attempt to flatten the query.
Thanks,
Craig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-performance@postgresql.org
Cc: cjames@modgraph-usa.com
Subject: Re: Overriding the optimizer
In-Reply-To: <43A23B3E.5050809@modgraph-usa.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox