2012-09-02 9 views
12

Ich verwende die folgenden Zeilen für die Schleife auf Zeilen einer Sqlite-Abfrage.Gibt es einen schnelleren Weg, um Zeilen von Sqlite-Abfrage zu durchlaufen?

this.open(); // opening db 
Cursor cursor = db.rawQuery(strQuery, null); 

cursor.moveToFirst(); 
do {  

    // do something  

} while (cursor.moveToNext()); 

cursor.close(); 

Wenn die Anzahl der Zeilen etwa 15000 beträgt, dauert es lange. Es dauert etwa 4 Sekunden für leere while Block und etwa 6 Sekunden für while Block, der einige Codes hat. Es zeigt, dass das Iterieren von Zeilen auf diese Weise zeitaufwendig ist.

Gibt es einen schnelleren Weg für das Schleifen von Zeilen in Android und Sqlite?

Danke,

+0

Ich bin nicht sicher, ob Ihre Anwendungsfälle für SQLite, aber dies von Nutzen sein kann: http://shopwith.it/2011/12/16/how-to-improve-android -app-performance-by-caching-daten-in-sqlite-and-images-to-the-sd-karte-android-developer-tipps/ – Eric

+0

Wenn Sie dafür sind, können Sie erklären, warum Sie abrufen müssen so viele Datensätze auf einmal? Können Sie in Ihrer SELECT-Anweisung auch nicht auf weniger reduzieren? –

Antwort

4

optimieren, was Sie innerhalb der Schleife tun, ist der einzige Weg, um die Geschwindigkeit des gesamten Betriebs zu verbessern. Wenn Sie beispielsweise bei jeder Iteration getColumnIndex aufrufen, verlieren Sie wertvolle Zeit. Tun Sie es einmal, speichern Sie den Wert.

Verwenden Sie traceView, um herauszufinden, wo Sie Zeit verlieren und verbessern Sie es dort. Leider kann ich keine konkrete Antwort geben, da ich nicht weiß, was du in der Schleife machst.


Traceview Debugging

Verwandte Themen