Was ist der schnellste Weg, um 10.000 Zeilen aus einer SQLite-Datenbank in den Speicher zu laden? Jede Zeile enthält 1 Text und 4 Ganzzahlen. Derzeit mache ich das:Was ist der schnellste Weg, 10000 Zeilen aus der SQLite-Datenbank zu laden?
while(!cursor.isAfterLast()) {
cursor.copyStringToBuffer(column_index_1, buffer);
cursor.copyStringToBuffer(column_index_2, buffer);
cursor.copyStringToBuffer(column_index_3, buffer);
cursor.copyStringToBuffer(column_index_4, buffer);
cursor.copyStringToBuffer(column_index_5, buffer);
cursor.moveToNext();
}
Der obige Code dauert etwa 750 ms auf Galaxy Nexus. Bei älteren Geräten könnte es einige Male langsamer sein. Kann ich es schneller machen?
(An dieser Stelle tippen Sie wahrscheinlich etwas wie "Warum müssen Sie die Zeilen in den Speicher laden?" Es ist ein bisschen kompliziert, aber ich kann versuchen, zu erklären, wenn jemand interessiert ist. Edit: Hier ist die Erklärung: https://gist.github.com/fhucho/af355d56ae3145e3e30f)
Ich habe Interesse finden können! Bitte erkläre. :) –
@KenWolf ok, ich poste einen Link zur Erklärung nach ein paar Minuten :) – fhucho
Wenn alle Spalten einer Zeile in den gleichen Puffer kopiert werden, kann es einen Versuch wert sein, eine SQL-Anweisung wie "select col1 || col2 || ... "sqlite die Verkettung durchführen lassen. Dies kann oder kann nicht schneller sein. –