SQLite
 sql >> Base de données >  >> RDS >> SQLite

Quels sont les frais généraux liés à l'utilisation d'AUTOINCREMENT pour SQLite sur Android ?

Mon estimation, en notant que je ne suis pas un statisticien, est que les frais généraux sont quelque chose comme 8-12 % plus lent.

J'ai obtenu les résultats en utilisant 3 tableaux structurellement similaires et simples avec deux colonnes TEXT, exécutant 10 000 inserts pour chaque tableau, en répétant cette opération 5 fois sur 4 appareils.

Tableau 1 (colonne Dflt) a été créé avec seulement les deux colonnes TEXT (utilisant ainsi le ROWID par défaut).

Tableau 2 (colonne AI) a été créé à l'aide de _id INTEGER PRIMARY KEY AUTOINCREMENT en plus des deux colonnes TEXT.

Tableau 3 (aucune colonne AI) a été créé à l'aide de _id INTEGER PRIMARY KEY en plus des deux colonnes TEXT.

Donc Tableau 2 utilise l'algorithme de sélection ROWID légèrement différent pour les encarts.

Les quatre appareils utilisés étaient :-

  • (1) Un appareil émulé par Genymotion (Tablette personnalisée - 5.1.0 - API 22 - 1536x2048)

  • (2) Une tablette Onix 10" (AT101-1116)

  • (3) Un HTC 1 M8 (HTC_0PKV1)

  • (4) Une tablette Lenevo A10-30 (Lenovo TB2-X30F)

    Les résultats que j'ai obtenus étaient :-

Les résultats sont plus favorables lorsque tout est exécuté en une seule transaction (c'est-à-dire beginTransaction(); avant toute insertion, avec setTransactionSuccessful(); et endTransaction(); après toutes les insertions (pour tous les tableaux, c'est-à-dire l'intégralité des 150 000 insertions), par ex. :-

La comparaison des deux tableaux met en évidence les avantages que l'utilisation des transactions peut avoir sur les performances.