Traduction du document How to improve multiple INSERT query
Les performances d'exécution des requêtes INSERT peuvent être décisives dans votre application. Découvrez les différentes solutions pour faire des INSERT multiples avec SQLiteVIEW.
Pour la démonstration nous utiliserons une base de données simple contenant 1 table. La table contient 3 colonnes [Id] --> clé primaire auto-incrémentée,
[Temperature] --> Float et [Sensor] --> chaîne de caractères.
Nous allons tester la requête INSERT suivante, répêtée 50 000 fois :
INSERT INTO MyTable (Sensor, Temperature) VALUES ("Thermocouple", "42");
3 méthodes différentes
Utilisation de la fonction Execute
Comme vous pouvez le voir ci-dessous, cette méthode est facile à coder.
Mais c'est aussi très lent. Plus de 5 minutes pour 50 000 INSERT !
Utilisation de la fonction Execute associée à une transaction
Dans ce cas nous entourons la fonction Execute de la fonction Create transaction et Commit transaction.
Les performances sont très nettement supérieures : ~ 1.6s pour 50 000 INSERT !
A noter que si une erreur se produit pendant l'exécution des requêtes, la fonction Rollback permet d'annuler les modifications apportées à la base de données depuis le Create transaction.
Utilisation d'une Transaction associée à un Statement
Ici nous avons la méthode la plus rapide.
Nous créons un statement avec la requête suivante :
INSERT
INTO
MyTable (Sensor, Temperature)
VALUES
(?, ?);
Les performances sont encore améliorées : 1s pour 50 000 INSERT !
Notes importantes