Feature request: optimizer improvement

Поиск
Список
Период
Сортировка
От Joe Love
Тема Feature request: optimizer improvement
Дата
Msg-id CAK3BLoSan3o2a9kLVDetkor-zyqn-1jmc0Y-rPtiS9a+uFL-uA@mail.gmail.com
обсуждение исходный текст
Ответы Handle LIMIT/OFFSET before select clause (was: Feature request: optimizer improvement)  (Jim Nasby <jim@nasby.net>)
Список pgsql-hackers
In postgres 9.2 I have a function that is relatively expensive.  When I write a query such as:

select expensive_function(o.id),o.* from offeirng o where valid='Y' order by name limit 1;

the query runs slow and appears to be running the function on each ID, which in this case should be totally unnecessary as it really only needs to run on 1 row.

When I rewrite the query like so:

select expensive_function(o.id), o.*
from (select *offering where valid='Y' order by name limit 1) o;

the expensive function only runs once and thus, much faster. I would think that the optimizer could handle this situation, especially when limit or offset is used and the expensive function is not used in a group by, order by or where.

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

Предыдущее
От: Antonin Houska
Дата:
Сообщение: Re: Reference to parent query from ANY sublink
Следующее
От: Kevin Grittner
Дата:
Сообщение: Re: [BUGS] BUG #8542: Materialized View with another column_name does not work?