SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Was sind die Gemeinkosten bei der Verwendung von AUTOINCREMENT für SQLite auf Android?

Ich schätze, dass ich kein Statistiker bin, dass der Overhead etwa 8–12 % beträgt langsamer.

Ich habe die Ergebnisse mit 3 erhalten strukturell ähnliche und einfache Tabellen mit zwei TEXT-Spalten, laufend 10.000 fügt pro Tisch ein und wiederholt dies 5 Mal auf 4 Geräten.

Tabelle 1 (Spalte Dflt) wurde nur mit den beiden TEXT-Spalten erstellt (wobei die Standard-ROWID verwendet wird).

Tabelle 2 (AI-Spalte) wurde mit _id INTEGER PRIMARY KEY AUTOINCREMENT erstellt zusätzlich zu den beiden TEXT-Spalten.

Tabelle 3 (Keine AI-Spalte) wurde mit _id INTEGER PRIMARY KEY erstellt zusätzlich zu den beiden TEXT-Spalten.

Also Tabelle 2 verwendet den etwas anderen ROWID-Auswahlalgorithmus für Beilagen.

Die vier verwendeten Geräte waren:-

  • (1) Ein von Genymotion emuliertes Gerät (Custom Tablet – 5.1.0 – API 22 – 1536 x 2048)

  • (2) Ein Onix-10-Zoll-Tablet (AT101-1116)

  • (3) Ein HTC 1 M8 (HTC_0PKV1)

  • (4) Ein Tablet Lenevo A10-30 (Lenovo TB2-X30F)

    Die Ergebnisse, die ich erhielt, waren:-

Die Ergebnisse sind günstiger, wenn alles in nur einer Transaktion ausgeführt wird (z. B. beginTransaction();). vor Einfügungen mit setTransactionSuccessful(); und endTransaction(); nach allen Einsätzen (für alle Tabellen also die gesamten 150.000 Einsätze), z.B. :-

Der Vergleich der beiden Tabellen hebt die Vorteile hervor, die die Verwendung von Transaktionen für die Leistung haben kann.