Thread: Postgresql7.4.5 running slow on plpgsql function
>hi, need some help with some experts here.
>currently we have a function that use together with temp table, it calls search result function, everytime
>this function is calling, it will go through some filter before come out as a result.
>now we have some major problem , the first time the function execute, it take about 13 second
>second time the function is execute, it take about 17 second, every time you execute the function
>the time taken will grow about 4 second, ?
>may i know what going on here?
>since we use function with temp table, so every statement that related to temp table will using EXECUTE
>command.
>
>regards
>ivan
On Thu, Jun 23, 2005 at 05:56:52PM +0800, Chun Yit(Chronos) wrote: > > currently we have a function that use together with temp table, it calls > search result function, everytime this function is calling, it will go > through some filter before come out as a result. now we have some major > problem , the first time the function execute, it take about 13 second > second time the function is execute, it take about 17 second, every time > you execute the function the time taken will grow about 4 second, ? may > i know what going on here? since we use function with temp table, so > every statement that related to temp table will using EXECUTE command. Could you post the function? Without knowing what the code is doing it's impossible to say what's happening. Is the temporary table growing on each function call? Does the function delete records from the table on each call, leaving a lot of dead tuples? -- Michael Fuhr http://www.fuhr.org/~mfuhr/
[Please copy the mailing list on replies so others can contribute to and learn from the discussion.] On Wed, Jun 29, 2005 at 12:29:42PM +0800, Chun Yit(Chronos) wrote: > > Yes, the function will delete records from the temporary table every time > on each call. > if leaving a lot of dead tuples, then how can we solve it? If the function deletes all records from the temporary table then you could use TRUNCATE instead of DELETE. Otherwise you could VACUUM the table between calls to the function (you can't run VACUUM inside a function). -- Michael Fuhr http://www.fuhr.org/~mfuhr/