¿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.
- La transacción de Sqlite bloquea Android ui
- ormlite para android: ayuda de diseño y más
- La transacción de Firebase no aborta remotamente si previamente se ha comprometido localmente
- Administrador de paquetes de Android ha muerto con TransactionTooLargeException
- Android: niveles de aislamiento de transacciones SQLite (ORMLite)
¿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?
- Android - cuándo llamar a db.setTransactionSuccessful ()?
- ¿El yieldIfContendedSafely () pierde los beneficios de una transacción?
- Borrar backstack y reemplazar fragmento actual con un fragmento de nivel superior
- Fragmento de duplicación en la transacción de fragmentos
- Ormlite Android inserciones masivas
- Fragmento no se muestra cuando el método add () se llama
- Transacción de la base de datos Android
- Fragmento Transacciones con transición - Los nombres de transición únicos son necesarios
¿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