Re: huge disparities in =/IN/BETWEEN performance

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: huge disparities in =/IN/BETWEEN performance
Дата
Msg-id 14273.1170993005@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: huge disparities in =/IN/BETWEEN performance  (Alvaro Herrera <alvherre@commandprompt.com>)
Ответы Re: huge disparities in =/IN/BETWEEN performance  (Joe <dev@freedomcircle.net>)
Re: huge disparities in =/IN/BETWEEN performance  ("George Pavlov" <gpavlov@mynewplace.com>)
Список pgsql-sql
Alvaro Herrera <alvherre@commandprompt.com> writes:
> I think the principle here is that the system is not gonna waste cycles
> on dumb queries.  Supposedly, morphing "foo BETWEEN 10 and 10" into
> "foo=10" is not a trivial transformation, and it'd impose a planning
> cost on all non-dumb BETWEEN queries.

There's a datatype abstraction issue involved: what does it take to
prove that "x >= 10 AND x <= 10" is equivalent to "x = 10"?  This
requires a nontrivial amount of knowledge about the operators involved.
We could probably do it for operators appearing in a btree operator
class, but as Alvaro says, it'd be cycles wasted for non-dumb queries.

As for the IN case, I think we do simplify "x IN (one-expression)" to
"x = one-expression", but "x IN (sub-select)" is a whole 'nother matter,
especially when you're comparing it to a case where one-expression is
a constant and so the planner can get good statistics about how many
rows are likely to match.
        regards, tom lane


В списке pgsql-sql по дате отправления:

Предыдущее
От: Alvaro Herrera
Дата:
Сообщение: Re: huge disparities in =/IN/BETWEEN performance
Следующее
От: Joe
Дата:
Сообщение: Re: huge disparities in =/IN/BETWEEN performance