On 03/17/2018 08:32 PM, Dean Rasheed wrote: > On 17 March 2018 at 18:40, Tomas Vondra <tomas.von...@2ndquadrant.com> wrote: >> Currently, analyze_mcv_list only checks if the frequency of the >> current item is significantly higher than the non-MCV selectivity. >> My question is if it shouldn't also consider if removing the item >> from MCV would not increase the non-MCV selectivity too much. >> > > Oh, I see what you're saying. In theory, each MCV item we remove is > not significantly more common than the non-MCV items at that point, > so removing it shouldn't significantly increase the non-MCV > selectivity. It's possible the cumulative effect of removing multiple > items might start to add up, but I think it would necessarily be a > slow effect, and I think it would keep getting slower and slower as > more items are removed -- isn't this equivalent to constructing a > sequence of numbers where each number is a little greater than the > average of all the preceding numbers, and ends up virtually > flat-lining. >
Yes, I think you're right. Another thing that occurred to me is that we're pretty much guaranteed to misestimate things at the tail end, and in my experience under-estimates have far worse consequences. regards -- Tomas Vondra http://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services