Bruce Momjian wrote:
> OK, updated version attached. I added "potential" to the first
> paragraph, and added "estimated cost" to the later part, fixed the
> "cheaper than", and clarified that we add the plan time cost to the
> non-generic plan, which is how it can be cheaper than the generic plan.
> I also moved the "Once a generic plan is chosen" line.
>
> Yeah, that's a lot of changes, but they all improved the text. Thanks.
Thanks for working on this.
! Prepared statements can optionally use generic plans rather than
! re-planning with each set of supplied <command>EXECUTE</command> values.
! This occurs immediately for prepared statements with no parameters;
! otherwise it occurs only after five or more executions produce estimated
! plan costs, with planning overhead added, that are, on average, more
! expensive than the generic plan cost.
The following might be easier to understand:
... after five or more executions produce plans whose estimated cost average
(including planning overhead) is more expensive than the generic plan cost estimate.
! A generic plan assumes each value supplied to <command>EXECUTE</command>
... assumes *that* each value ...
! is one of the column's distinct values and that column values are
! uniformly distributed. For example, if statistics records three
Shouldn't it be "record"?
The documentation treats "statistics" as a plural word throughout.
! distinct column values, a generic plan assumes a column equality
! comparison will match 33% of processed rows. Column statistics
... assumes *that* a column equality comparison will match 33% of *the* processed rows.
! also allows generic plans to accurately compute the selectivity of
Column statistics also *allow* ...
! unique columns. Comparisons on non-uniformly-distributed columns and
! specification of non-existent values affects the average plan cost,
! and hence if and when a generic plan is chosen.
(Disclaimer: I am not a native speaker.)
Other than that, a hearty +1.
Yours,
Laurenz Albe