SQLite
 sql >> Database >  >> RDS >> SQLite

Quali sono i costi generali dell'utilizzo di AUTOINCREMENT per SQLite su Android?

La mia stima, notando che non sono uno statistico, è che le spese generali siano qualcosa come 8-12% più lento.

Ho ottenuto i risultati utilizzando 3 tabelle strutturalmente simili e semplici con due colonne TEXT, con 10.000 inserti per ogni tabella, ripetendo 5 volte su 4 dispositivi.

Tabella 1 (colonna Dflt) è stato creato con solo le due colonne TEXT (utilizzando quindi il ROWID predefinito).

Tabella 2 (colonna AI) è stato creato utilizzando _id INTEGER PRIMARY KEY AUTOINCREMENT oltre alle due colonne TESTO.

Tabella 3 (nessuna colonna AI) è stato creato utilizzando _id INTEGER PRIMARY KEY oltre alle due colonne TESTO.

Quindi Tabella 2 utilizza l'algoritmo di selezione ROWID leggermente diverso per gli inserti.

I quattro dispositivi utilizzati erano :-

  • (1) Un dispositivo emulato Genymotion (tablet personalizzato - 5.1.0 - API 22 - 1536x2048)

  • (2) Un tablet Onix da 10" (AT101-1116)

  • (3) Un HTC 1 M8 (HTC_0PKV1)

  • (4) Un tablet Lenevo A10-30 (Lenovo TB2-X30F)

    I risultati che ho ottenuto sono stati :-

I risultati sono più favorevoli quando tutto viene eseguito in una sola transazione (ad esempio beginTransaction(); prima di qualsiasi inserimento, con setTransactionSuccessful(); e endTransaction(); dopo tutti gli inserti (per tutte le tabelle cioè gli interi 150.000 inserti), ad es. :-

Confronto delle due tabelle, evidenzia i vantaggi che l'utilizzo delle transazioni può avere sulla performance.