Re: intarray planning/exeuction problem with multiple operators
От | Tom Lane |
---|---|
Тема | Re: intarray planning/exeuction problem with multiple operators |
Дата | |
Msg-id | 15072.1436806402@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | intarray planning/exeuction problem with multiple operators (Jeff Janes <jeff.janes@gmail.com>) |
Список | pgsql-hackers |
Jeff Janes <jeff.janes@gmail.com> writes: > I've found an interesting performance problem in the intarray extension > module. It doesn't seem to be version dependent, I've verified it in 9.4.4 > and 9.6devel. Seems like this isn't specifically an issue for intarray, but rather one with the core GIN code not being smart about the combination of selective and unselective index conditions. In particular, it seems like the smart thing for GIN to do with this example is just ignore the @@ condition altogether so far as the index search goes, and mark all the results as needing recheck so that the @@ operator gets applied as a filter. You could also complain about the core planner not considering leaving some potentially-indexable quals out of the actual index condition, but TBH I don't see that that would be a useful use of planner cycles. In almost every case it would mean that if there are K quals potentially usable with a given index, we'd cost out 2^K-1 index paths and immediately reject all but the use-em-all alternative. That's a lot of cycles to spend to handle a corner case. It's always been assumed to be the index AM's problem to optimize use of the index quals it's handed, and I don't see why that shouldn't be true here. > The proposed selectivity estimate improvement patch for @@ does not fix > this (and evaluating that patch was how I found this issue.) Nah, it wouldn't: the cost estimates are correct, in the sense that gincostestimate realizes that GIN will be horribly stupid about this. regards, tom lane
В списке pgsql-hackers по дате отправления: