Hello sqlite users,

I believe I have used many ways to speed up the UPDATE of many rows,
But nothing helped so far.

We are opening a transaction,
like this:

             private SQLiteTransaction BeginTransaction(SQLiteConnection 
connection)
             {
                    return connection.BeginTransaction();
             }

and close it at the end of course.
We open one connection, one transaction, and then we update many rows on the 
database.
This means we are cumulate many different SQL statements over quite a few 
tables .

One big part is the update of 12000 records in one table

             protected override void UpdateRows(SQLiteConnection connection, 
IEnumerable<DataRow> rowsToUpdate)
             {
                    var command = new SQLiteCommand(Queries.SQLUpdateDocument, 
connection);

                    foreach (DataRow documentRow in rowsToUpdate)
                    {
                           command.Parameters.AddWithValue("@Filename", 
documentRow[Constants.Col_Document_Filename]);
                           command.Parameters.AddWithValue("@ClassID", 
documentRow[Constants.Col_Document_ClassID]);
                           command.Parameters.AddWithValue("@PageCount", 
documentRow[Constants.Col_Document_PageCount]);
                           command.Parameters.AddWithValue("@DocID", 
documentRow[Constants.Col_Document_GlobalDocID]);
                           command.Parameters.AddWithValue("@ReadOnly", 
documentRow[Constants.Col_Document_ReadOnly]);
                           command.Parameters.AddWithValue("@Confirmed", 
documentRow[Constants.Col_Document_Confirmed]);
                           command.Parameters.AddWithValue("@ParentFolderID", 
documentRow[Constants.Col_Document_ParentFolderID]);
                           command.Parameters.AddWithValue("@SequenceNumber", 
documentRow[Constants.Col_Document_SequenceNumber]);
                           command.Parameters.AddWithValue("@XmlRepr", 
documentRow[Constants.Col_Document_XmlRepr]);

                           command.ExecuteNonQuery();

                           documentRow.AcceptChanges();
                    }
             }

with the query beeing:

UPDATE T_Doc SET
Filename = @Filename,
ClassID = @ClassID,
PageCount = @PageCount,
ReadOnly = @ReadOnly,
Confirmed = @Confirmed,
ParentFolderID = @ParentFolderID,
SequenceNumber = @SequenceNumber,
XmlRepr = @XmlRepr
WHERE ID = @DocID;


the AcceptChanges() does not take long.
The ExecuteNonQuery() is much slower than expected.

PRAGMA foreign_keys = ON;

has been executed before the update command and ClassID and ParentFolderID 
reference other tables.

Anyways - the update is extremely slow, updating 12000 records takes like 15-30 
minutes.

Can anybody help me with this?

Hinrich Aue
Sr. SW Engineer
Kofax Development GmbH

Wentzinger Strasse 19
79106 Freiburg
Germany

Tel: +49 761 452 69 57234
Fax: +49 761 452 69 58734
hinrich....@kofax.com


NEWS FLASH: Kofax Among "Five Most Intriguing Companies at Finovate 2013 for 
Mobile Customer Onboarding" 
<http://www.finovate.com/spring13vid/videos/Kofax.mov>


________________________________

This communication is only for the use of the intended recipient. It may 
contain confidential or proprietary information. If you are not the intended 
recipient or have received this communication in error, please notify the 
sender via phone and destroy this communication immediately.
Kofax Development GmbH
Sitz der Gesellschaft: Freiburg i. Brg.
Registergericht: Amtsgericht Freiburg i.Br.
Registernummer: HRB 7007
Gesch?ftsf?hrer: Bradford Weller, Christian Hefner, Daniel Geiger

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to