Re: procedure takes much more time than its query statement
| От | Craig Ringer |
|---|---|
| Тема | Re: procedure takes much more time than its query statement |
| Дата | |
| Msg-id | 4EB0A920.1010209@ringerc.id.au обсуждение исходный текст |
| Ответ на | procedure takes much more time than its query statement (Sabin Coanda <s.coanda@deuromedia.com>) |
| Список | pgsql-performance |
On 11/01/2011 10:01 PM, Sabin Coanda wrote: > Hi there, > > I have the function: > CREATE OR REPLACE FUNCTION "Test"( ... ) > RETURNS SETOF record AS > $BODY$ > BEGIN > RETURN QUERY > SELECT ...; > END; > $BODY$ > LANGUAGE 'plpgsql' STABLE > > The function call takes about 5 minute to proceed, but using directly its > query statement, after replacing the arguments with the same values, it > takes just 5 seconds ! > > I repeat the test several times and the duration is the same. > > What is wrong ? > Is it also slow if, outside PL/PgSQL in a regular psql session, you PREPARE the query, then EXECUTE it? If so, you're being bitten by a generic query plan. The server does a better job when it knows what parameter is used when it's planning the statement. To work around it, you can use the PL/PgSQL 'EXECUTE ... USING ...' statement to force a re-plan of the statement for every time it's run. -- Craig Ringer
В списке pgsql-performance по дате отправления: