2012-09-02 14 views
12

Estoy usando las siguientes líneas para el bucle en las filas de una consulta Sqlite.¿Hay alguna manera más rápida de iterar a través de las filas de la consulta Sqlite?

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

cursor.moveToFirst(); 
do {  

    // do something  

} while (cursor.moveToNext()); 

cursor.close(); 

Cuando el número de filas es aproximadamente 15000, lleva mucho tiempo. Se necesitan aproximadamente 4 segundos para el bloque while vacío y aproximadamente 6 segundos para el bloque while que tiene algunos códigos. Muestra que iterar en las filas de esta manera consume mucho tiempo.

¿Hay alguna manera más rápida para hacer bucles en filas en Android y Sqlite?

Gracias,

+0

No estoy seguro de casos de uso para SQLite, pero esto puede ser de utilidad: http://shopwith.it/2011/12/16/how-to-improve-android -app-performance-by-caching-data-in-sqlite-and-images-to-the-sd-card-android-developer-tips/ – Eric

+0

Si le gusta, ¿puede explicar por qué necesita recuperar tantos registros a la vez? Además, ¿no puedes colapsar a menos en tu instrucción SELECT? –

Respuesta

4

Optimización de lo que se hace dentro del bucle es la única manera de mejorar la velocidad de toda la operación. Por ejemplo, si está haciendo llamadas getColumnIndex en cada iteración, perderá un tiempo precioso. Hazlo una vez, almacena el valor.

Usa traceView para localizar dónde estás perdiendo tiempo y mejorarlo allí. Tristemente no puedo dar una respuesta concreta, ya que no sé lo que estás haciendo dentro del ciclo.


Traceview Debugging

Cuestiones relacionadas