Mi aplicación para Android funciona mediante el uso de una base de datos SQLite que se genera en la PC del usuario y se transfiere al dispositivo. Todo funciona, pero no anticipé la cantidad de usuarios que tendrían realmente grandes cantidades de datos. En estos casos, la IU es muy lenta ya que espera a que se obtengan los datos.Android SQLite Performance con índices
He intentado una serie de trucos que estaba "seguro" que acelerarían las cosas, pero nada parece tener un efecto notable. Mis consultas son casi todas muy simples, usualmente son un solo "col = val" para la cláusula WHERE, y datos INTEGER en la columna. Entonces no puedo hacer mucho con las consultas.
Lo último, y no soy un experto en SQL de ninguna manera, fue usar comandos "CREATE INDEX" en la PC, creyendo que estos índices se utilizan para acelerar las búsquedas en la base de datos. ¡Los índices aumentaron significativamente el tamaño del archivo de la base de datos, por lo que me sorprendió que no pareciera tener ningún efecto en la velocidad de mi aplicación! Una pantalla que tardaba 8 segundos en completarse sin índices todavía demora unos 8 segundos incluso con ellos. Esperaba bajar las cosas a al menos la mitad.
Lo que me pregunto en este punto es si la implementación de SQLite en Android usa índices de base de datos, o si solo estoy desperdiciando espacio al generarlos. ¿Alguien puede responder esto?
¿Alguna otra cosa para tratar de acelerar el acceso?
(Por si vale la pena, los usuarios no tienen nada de qué quejarse. Mi peor usuario hasta ahora tiene datos que generan 630,000 registros (15 tablas), ¡así que hay mucho que es posible!)
Doug Gordon GHCS Sistemas
publique algunas consultas lentas, junto con definiciones de tabla y definiciones de índice – Mikpa