SAPHIR - Toolkits Documents

cancel
Showing results for 
Search instead for 
Did you mean: 

'Comment faire' : améliorer des requêtes INSERT multiples

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.

image_png1.png

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.

BM-Transation.png

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 (?, ?);

  • "?" remplace les valeurs dans la requête
  • "?" sont remplacés par les valeurs réelles pendant le Execute statement

image_png2.png

Les performances sont encore améliorées : 1s pour 50 000 INSERT !

Notes importantes

  • Les temps d'exécution des 50 000 requêtes sont donnés à titre indicatif.
  • Vous pouvez faire votre propre test en utilisant la pièce jointe (le toolkit d'évaluation SQLiteVIEW et LabVIEW 2010 ou version supérieure sont nécessaires)

Contributors