Hi On Tue, Oct 21, 2014 at 12:53 PM, Ilya I. Ashchepkov <koctep@xxxxxxxxx> wrote: > I wrote a function and during testing it I came across the strange > behaviour. > Function runtime is about 200ms first 5 times, 6th and futher calls takes > ~22000 ms. > I simplified my schema, you can see it in attached file. > I've tested on 9.4beta3 and 9.3.5. I didn't look at the test case. But most likely the problem is that after 5 executions, plancache decides that a generic plan is no more expensive than a custom plan, and reverts to executing the generic one. But in reality there is a big difference in execution time. See this for how the logic works: https://github.com/postgres/postgres/blob/master/src/backend/utils/cache/plancache.c#L1036 As a workaround you could use PL/pgSQL EXECUTE to run the query, which isn't subject to generic plans: http://www.postgresql.org/docs/current/static/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN Regards, Marti -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general