1 -- Drop your indexes on the table to be inserted into. 2 -- Execute a BEGIN transaction 3 -- Execute your inserts. 4 -- Execute a commit or rollback and END transaction 5 -- Rebuild / recreate your indexes "Alex" <alex@xxxxxxxxxxxxxxx> wrote in message news:44F5A014.3070409@xxxxxxxxxxxxxxxxxx > Hi, > i am having a problem with a plperl function i am trying to write. > (using 8.1.4) > > the function does a select (ca 30,000 rows) using > > spi_query($query); while (my $row = spi_fetchrow($handle)) > > and within the while loop inserts the record into a table using > spi_exec_query($query); > > The initial select is pretty fast and first inserts very fast, but after > a few thousand inserts the inserts start to slow down until it crawls. > Writing the same in a normal perl script takes less than 90 seconds > while the function is taking 10 minutes. > > My guess is that it is all memory related and was wondering if there is > a memory leak (as I read in some mails) or if there is a better way to > do what I want. > > Also is there a way to commit transactions within a stored procedure / > function? I noticed that if I do a delete and insert within the same > function that the deletes are not committed until the function returns. > > Thanks for any advice. > > Alex > > > > > > ---------------------------(end of broadcast)--------------------------- > TIP 9: In versions below 8.0, the planner will ignore your desire to > choose an index scan if your joining column's datatypes do not > match >