not using index through procedure

Поиск
Список
Период
Сортировка
От Robin Ericsson
Тема not using index through procedure
Дата
Msg-id 1097767858.8849.117.camel@pylver.localhost.nu.
обсуждение исходный текст
Ответы Re: not using index through procedure  (Martijn van Oosterhout <kleptog@svana.org>)
Список pgsql-general
After some discussion on performance list, I guess this is back to a
general question :)

This is very simplified query of my real problem, but it should show the
way of the problems.

CREATE OR REPLACE FUNCTION ago(interval) RETURNS timestamp AS
'SELECT (now() - $1)::timestamp without time zone'
  LANGUAGE 'sql' IMMUTABLE STRICT;

This query uses the index without problem.
SELECT entered
FROM data
WHERE ago('60 seconds') < data.entered;

However using this function
CREATE OR REPLACE FUNCTION get_machine_status(interval) RETURNS
timestamp AS
'SELECT entered
FROM data
WHERE ago($1) < data.entered
' LANGUAGE 'sql' VOLATILE;

and call it like this:
select * from get_machine_status('60 seconds');
makes the query not use index, I guess it some basic problem I'm having,
maybe I should make this into a view instead?


Regards,
    Robin


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

Предыдущее
От: "Ian Harding"
Дата:
Сообщение: Re: creating audit tables
Следующее
От: Michael Fuhr
Дата:
Сообщение: Re: Date format for bulk copy