On 2018-03-02 15:29:09 -0500, Bruce Momjian wrote:
> Postgres uses a conservative method for reusing plans with previous
> constants, as described in the PREPARE manual page:
>       https://www.postgresql.org/docs/10/static/sql-prepare.html
>       Prepared statements can use generic plans rather than re-planning with
>       each set of supplied EXECUTE values. This occurs immediately for 
> prepared
>       statements with no parameters; otherwise it occurs only after five or 
> more
>       executions produce plans whose estimated cost average (including 
> planning
>       overhead) is more expensive than the generic plan cost estimate. Once
>       a generic plan is chosen, it is used for the remaining lifetime of the
>       prepared statement. Using EXECUTE values which are rare in columns with
>       many duplicates can generate custom plans that are so much cheaper than
>       the generic plan, even after adding planning overhead, that the generic
>       plan might never be used.
> While I have heard people complain about how other databases cache
> prepare plans, I have heard few complaints about the Postgres approach,
> and I haven't even heard of people asking to control the documented "five
> or more" behavior.

This *constantly* is a problem.


Andres Freund

Reply via email to