¿Cómo obtengo el mejor rendimiento con SQLite en Android?
He notado que hay varias maneras de hacer operaciones SQLite (consulta, insertar, actualizar, eliminar), y algunos pueden ser más rápidos que el resto. Muchos sitios web ofrecen consejos diferentes, y algunos conflictos con los demás.
-
Parece que el uso de una transacción para el inserto masivo es de alguna manera más rápido que hacerlo en un bucle.
- Las inserciones de SQLite se vuelven más lentas incluso con transacciones
- Android: transacciones SQLite al usar ContentResolver
- Fragmento no se muestra cuando el método add () se llama
- ¿El yieldIfContendedSafely () pierde los beneficios de una transacción?
- La transacción de Firebase no aborta remotamente si previamente se ha comprometido localmente
¿Cómo? ¿Cuál es la mejor manera de lograr el mejor rendimiento al usar SQLite? ¿Cómo funciona sqlite en Android?
-
Confuso con el uso de InserHelper vs ContentValues , como se muestra aquí .
¿Cómo funciona el InserHelper y será siempre más rápido que ContentValues ? ¿La envoltura con una transacción acelerará aún más?
-
Confusión en otros frameworks SQL. Recuerdo que la adición de índices aumentaría el rendimiento de las consultas relacionadas con los índices. ¿Esto es cierto para Android también? ¿Es esta una buena practica?
-
He oído que en algunos casos, lo mejor es no usar el subproceso de interfaz de usuario para operaciones de base de datos. ¿En qué casos se recomienda esto? ¿Qué tan lenta podría ser la operación de DB? Si el DB se convierte en 70MB, ¿significa que será mucho más lento y el hilo de la interfaz de usuario nunca debe manejarlo?
- Transacción de la base de datos Android
- Fragmento de duplicación en la transacción de fragmentos
- BeginTransaction (), endTransaction () y setTransactionSuccessful (). ¿Qué hacen exactamente?
- Android: niveles de aislamiento de transacciones SQLite (ORMLite)
- ¿Debo usar siempre transacciones en android sqlite?
- Borrar backstack y reemplazar fragmento actual con un fragmento de nivel superior
- ormlite para android: ayuda de diseño y más
- SQLiteDatabase transacción anidada y solución alternativa
¿Cómo?
Las transacciones implican E / S de disco. Es mucho menos costoso hacer un trozo más grande de E / S de disco que un montón de pequeños trozos de E / S de disco.
¿Cómo funciona el InserHelper y siempre será más rápido que contentValues?
Citando la documentación : "Esta clase permite a los usuarios realizar múltiples inserciones en una tabla, pero compilar la sentencia SQL sólo una vez, lo que puede aumentar el rendimiento".
Lo envolverá con una velocidad de transacción aún más?
Presumiblemente sí.
Es cierto para Android también?
Los índices pueden aumentar la velocidad de consulta, si crea los índices adecuados para las consultas que esté realizando. Los índices siempre disminuyen la velocidad de inserción / actualización / eliminación, ya que ahora es necesario actualizar esos índices. Esto no tiene nada que ver con Android.
Es es una buena cosa para usar?
Eso es imposible responder en abstracto. Esto no tiene nada que ver con Android.
Lo mejor es no usar el subproceso de interfaz de usuario para operaciones de base de datos
Correcto.
¿En qué casos se recomienda?
Nunca se recomienda realizar ninguna E / S de disco en el hilo de la aplicación principal.
¿Qué tan lenta podría ser la operación de DB?
Siglos. Probablemente para entonces, algo fallará en el dispositivo, o se quedará sin batería.
Si el DB se convierte en 70MB, significa que va a ser mucho más lento
Depende de lo que hagas con ella.
Y el hilo de la interfaz de usuario nunca debe manejarlo?
Correcto.
- ¿Qué es Uri.parse en android
- Android C2DM: Duplicar mensaje para el mismo dispositivo y la aplicación