On Mon, Jan 18, 2016 at 02:14:11PM -0500, Tom Lane wrote:
> Bruce Momjian <bruce@momjian.us> writes:
> > I never understood why we don't just keep the selectivity estimates of
> > previous plans and just reuse the plan if the selectivity estimates are
> > similar. Isn't parameter selectivity the only thing that distinguishes
> > on plan with parameter from another?
>
> > Checking selectivity estimates must be cheaper than replanning. This
> > could be done at the second use of the prepared plan, and maybe for all
> > plan reuses, rather than waiting for five and then perhaps getting this
> > bad behavior.
>
> You're imagining that a selectivity recheck could be separated out from
> the rest of the planner. That's nowhere near feasible, IMO. Even if it
I think you would have to do the checks before entering the planner and
save them off for use in the planner.
> were, what would we do with it? There's no reliable way to determine
> whether X% change in one or another selectivity number would change the
> selected plan, other than by redoing practically all of the planning work.
Well, if it is +/-1%, I think we can assume we can reuse the plan just
fine from the second prepared call until we see a major selectivity
change. While we have never exposed the count of prepared queries
before we choose a generic plan, I can see us exposing this percentage.
-- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB
http://enterprisedb.com
+ As you are, so once was I. As I am, so you will be. +
+ Roman grave inscription +