2016-04-27 13 views
0

Ich habe vor kurzem ein Programm programmiert, das jeden Tag 20000 Rekord in sqlite hinzufügen oder aktualisieren kann. Durch die Verwendung von Stopwatch erkannte ich, dass alle Datensätze zu SQLite in etwa 40 Minuten hinzufügen würde.Mit Dataset in sqlite

durch die Art und Weise ist dies der Code für das Hinzufügen der Datensätze:

string q = "INSERT INTO " + title + " VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 
        SQLiteCommand cmd = new SQLiteCommand(q, Assist.con_database); 

        cmd.Parameters.AddWithValue("@**", null); 
        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 

        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 
        cmd.Parameters.AddWithValue("@**", **); 

        Assist.con_database.Open(); 
        cmd.ExecuteNonQuery(); 
        Assist.con_database.Close(); 

wie kann ich die Zeit und erhöhen die Geschwindigkeit der Zugabe in SQLite reduzieren?

+0

Können Sie mehr als eine 'INSERT' in einer Sitzung (Öffnen/Schließen) darum, vielleicht ein paar' INSERT's in einer einzigen Abfrage kombinieren? –

Antwort

0

Sie sollten die Parameter nur einmal hinzufügen. Dann weisen Sie jedem Einfügen nur Werte zu den vorhandenen Parametern zu und rufen ExcecuteNonQuery auf.

Durch die Verwendung einer Transaktion wird auch die Leistung verbessert.

So sollte Ihr Fluss aussehen wie:

  1. Open Connection
  2. Transaktion Begin
  3. Befehl erstellen, setzen Befehlstext und Parameter erstellen.
  4. Weisen Sie jedem Einfügen/Aktualisieren Werte zu Parametern zu und rufen Sie ExcecuteNonQuery auf.
  5. Commit Transation
  6. Verbindung schließen