Subject Re: [firebird-support] Insertion speed
Author Helen Borrie
At 03:09 PM 7/02/2005 -0700, you wrote:

>Hi I was wondering what kind of performance is normal to expect when
>inserting multiple records into Firebird? The scenario I have right now is
>I call a stored procedure that runs a For..Select to gather a list of people
>that need to be inserted into another table. This query is simple basically
>select all people with this attribute. I have in the past been able to
>optimize this For..Select query to improve speed but this time I'm wondering
>if it's just the # of records I am trying to insert which is taking so long.
>There are no other stored procedures or triggers involved in this procedure
>andI insert roughly 15000 records and its taking about 1.5 minutes. Is
>there someway or technique I could use to improve this speed?

Yup. Break this into two transactions and hard-commit between the two and
after the second. The recommended "start point" for determining the
optimal maximum number of statement executions in a transaction is ~8000.

If there are a lot of user-defined indexes in the receiving table and the
table is a fast-gowing one and you are doing these inserts regularly, then
you could consider doing them in times when other users are offline, and
setting indexes inactive for the duration.

Make sure that you don't run these bulk inserts in a commit retaining
transaction.

./hb