On Fri, May 29, 2020 at 9:37 PM Ashutosh Bapat <ashutosh.bapat....@gmail.com> wrote:
> On Fri, May 29, 2020 at 6:40 AM Andy Fan <zhihui.fan1...@gmail.com> wrote: > > > > > >> > >> >so we need to optimize the cost model for such case, the method is the > >> >patch I mentioned above. > >> > >> Making the planner more robust w.r.t. to estimation errors is nice, but > >> I wouldn't go as far saying we should optimize for such cases. The stats > >> can be arbitrarily off, so should we expect the error to be 10%, 100% or > >> 1000000%? > > > > > > I don't think my patch relay on anything like that. My patch doesn't > fix the > > statistics issue, just adding the extra cost on qual cost on Index > Filter part. > > Assume the query pattern are where col1= X and col2 = Y. The impacts are > : > > 1). Make the cost of (col1, other_column) is higher than (col1, col2) > > 2). The relationship between seqscan and index scan on index (col1, > other_column) > > is changed, (this is something I don't want). However my cost > difference between > > index scan & seq scan usually very huge, so the change above should has > > nearly no impact on that choice. 3). Make the cost higher index scan > for > > Index (col1) only. Overall I think nothing will make thing worse. > > When the statistics is almost correct (or better than what you have in > your example), the index which does not cover all the columns in all > the conditions will be expensive anyways because of extra cost to > access heap for the extra rows not filtered by that index. An index > covering all the conditions would have its scan cost cheaper since > there will be fewer rows and hence fewer heap page accesses because of > more filtering. So I don't think we need any change in the current costing model. > Thank you for your reply. Looks you comments is based on the statistics is almost correct (or better than what I have in my example), That is true. However my goal is to figure out a way which can generate better plan even the statistics is not correct (the statistics with such issue is not very uncommon, I just run into one such case and spend 1 week to handle some non-technology stuff after that). I think the current issue is even my patch can make the worst case better, we need to make sure the average performance not worse. -- Best Regards Andy Fan