rapidité SQL sous TCL

Bonjour à tous,

exécuter ces lignes de commandes prennent beaucoup de temps quand on en a 5000 à faire:
db1 eval {INSERT INTO t1 VALUES(1,‘hello’)}
db1 eval {INSERT INTO t1 VALUES(2,‘goodbye’)}
db1 eval {INSERT INTO t1 VALUES(3,‘howdy!’)}

Existe t il un moyen d’envoyer une commande avec plusieurs lignes d’un coup d’un seul?
j’ai essayé :
db1 eval {INSERT INTO t1 VALUES(1,‘hello’),(2,‘goodbye’)}
ça ne fonctionne pas
faire:
db1 eval {INSERT INTO t1 VALUES(1,‘hello’);INSERT INTO t1 VALUES(2,‘goodbye’)}
n’est pas plus rapide à exécuter

En sql simple il ne me semble pas, après si tu nous précise ta bdd cible il y a peu être moyen de trouver une astuce. Genre pour Oracle «Bulk collect & Forall» ou en SQLServer «Bulk insert»

c’est sous TCL en utilisant sqlite3

TCL ??? le langage ? en.wikipedia.org/wiki/Tcl

Apparemment il faut utiliser les transaction, mais comme je ne connais pas TCL je ne pourrais pas t’aider plus :
stackoverflow.com/questions/1061 … in-android
stackoverflow.com/questions/1567 … in-c-sharp
stackoverflow.com/questions/3640 … in-sqlite3

Merci beaucoup pour ton lien. Après quelques recherches, il suffit de créer une string contenant toutes les commandes à lancer, avec juste BEGIN au debut et END à la fin:
BEGIN;
INSERT INTO table VALUES ();
INSERT INTO table VALUES ();

END;
Et ça marche du tonnerre (1s au lieu de 10 minutes)

Ha oui en effet il vaut mieux envoyer toutes ses requête en une seule fois … le gros point de ralentissement est souvent dans la communication inter-language/appli/serveur/…
Heureux que tu ai pu améliorer tes perfs par 600 :mrgreen: