sql >> Base de Datos >  >> RDS >> SQLite

¿Cuáles son los gastos generales de usar AUTOINCREMENT para SQLite en Android?

Mi estimación, teniendo en cuenta que no soy un estadístico, es que los gastos generales son algo así como 8-12% más lento.

Obtuve los resultados usando 3 mesas estructuralmente similares y simples con dos columnas de TEXTO, corriendo 10,000 inserciones por cada mesa, repitiendo esto 5 veces en 4 dispositivos.

Tabla 1 (columna Dflt) se creó solo con las dos columnas de TEXTO (utilizando así el ROWID predeterminado).

Tabla 2 (columna AI) fue creado usando _id INTEGER PRIMARY KEY AUTOINCREMENT además de las dos columnas de TEXTO.

Tabla 3 (sin columna AI) fue creado usando _id INTEGER PRIMARY KEY además de las dos columnas de TEXTO.

Entonces Tabla 2 utiliza el algoritmo de selección ROWID ligeramente diferente para inserciones.

Los cuatro dispositivos utilizados fueron:-

  • (1) Un dispositivo emulado Genymotion (tableta personalizada - 5.1.0 - API 22 - 1536x2048)

  • (2) Una tableta Onix de 10" (AT101-1116)

  • (3) Un HTC 1 M8 (HTC_0PKV1)

  • (4) Una tableta Lenovo A10-30 (Lenovo TB2-X30F)

    Los resultados que obtuve fueron:-

Los resultados son más favorables cuando todo se ejecuta en una sola transacción (es decir, beginTransaction(); antes de cualquier inserción, con setTransactionSuccessful(); y endTransaction(); después de todas las inserciones (para todas las tablas, es decir, las 150 000 inserciones completas), p. :-

La comparación de las dos tablas destaca los beneficios que el uso de transacciones puede tener sobre el rendimiento.