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
Re: huge disparities in =/IN/BETWEEN performance |
Список | 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 по дате отправления: