So fügen Sie 40000 Datensätze schnell in eine SQLite-Datenbank auf einem iPad ein

7

Ich möchte 40000 Datensätze, die ich von einem Webdienst erhalte, in eine SQLite-Datenbank in meiner iPad-App einfügen.

Ich habe den folgenden Code geschrieben, aber es dauert etwa 20 Minuten, gibt es einen schnelleren Weg?

%Vor%     
OscarVGG 31.01.2013, 17:18
quelle

2 Antworten

22

Es gibt drei Dinge, die Sie tun müssen, um die Einfügungen zu beschleunigen:

  • Verschieben Sie den Aufruf von sqlite3_open außerhalb der Schleife. Momentan wird die Schleife nicht angezeigt, daher nehme ich an, dass sie außerhalb Ihres Code-Snippets liegt
  • Fügen Sie BEGIN TRANSACTION und COMMIT TRANSACTION Aufrufe hinzu - Sie müssen die Transaktion vor der Einfügeschleife beginnen und sie beenden, unmittelbar nachdem die Schleife beendet ist.
  • formatStringQueryInsertWithTable wirklich parametrisiert machen - Derzeit scheint es so zu sein, dass Sie keine vorbereiteten Anweisungen in vollen Zügen verwenden, denn obwohl Sie sqlite3_prepare_v2 verwenden, haben Sie in Ihrem Code keine Aufrufe von sqlite3_bind_XYZ .

Hier ist ein schöner Post, der Ihnen zeigt, wie Sie all das oben genannte tun . Es ist einfach C, aber es wird als Teil eines Objective-C-Programms gut funktionieren.

%Vor%     
dasblinkenlight 31.01.2013, 17:34
quelle
5

Wenn ich BEGIN TRANSACTION anrief und dann 20 Einfügungen lud, gab das Aufrufen von COMMIT TRANSACTION eine 18-fache Leistungssteigerung - super Tipp! Zwischenspeichern der vorbereiteten Aussagen war wenig hilfreich.

    
Jason 22.09.2014 19:18
quelle