Jim C. Nasby wrote:
> Now, if both of these are done using a prepared statement, it's going to
> look like:
>
> SELECT * FROM queue WHERE status='?';
>
> If the first one to run is the queue processing one, the planner will
> probably choose the index. This means that when we're searching on 'N',
> there will be a fairly small number of tuples read to execute the query,
> but when searching for 'D' a very large number of tuples will be read.
I do not know how exactly how pg handles this internally, however while
skimming the oracle tuning pocket guide I picked up for 2 euros I
noticed that it mentioned that since oracle 9i bound parameter values
are evaluated before the execution plan is determined.
Maybe I am mixing up separate concepts (are bound variables and prepared
statements different concepts?) here. I also do not really understand if
that means that oracle does not store a query plan for a prepared query
or if it just does some special handling in case it knows that a
prepared statement column is known to have a highly varying selectivity
per value.
regards,
Lukas