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

---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
      choose an index scan if your joining column's datatypes do not
      match

Reply via email to