Lukas Smith wrote:
> Bruce Momjian wrote:
>
> >> 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.
> >
> > What the Oralce manual means I think is that the plan of the query is
> > delayed until the _first_ EXECUTE, so it has some values to use in the
> > optimizer. The problem is that later queries might use constants of
> > greatly different cardinality.
>
> ok .. which just goes to tell to not use prepared statements for a
> column with highly varying selectivity ..?
>
> or is there a realistic shot at fixing this use case?
It is an issue for all databases. We gave a TODO about it:
* Flush cached query plans when the dependent objects change, when the cardinality of parameters changes dramatically,
or when new ANALYZE statistics are available
-- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610)
359-1001+ If your life is a hard drive, | 13 Roberts Road + Christ can be your backup. | Newtown Square,
Pennsylvania19073