|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Invité de passage
![]() |
Bonjour,
Je cherche en ce moment un moyen d'optimiser mon code pour que le temps de traitement soit le plus rapide possible. Les diverses insertions qui se trouvent dans mon code sont de cette forme : Citation:
Y a t'il une manière plus rapide en SQLITE3 de faire des insertions et lecture sur une table ? Une façon d'optimiser mon code plus haut ? Merci pour vos réponses |
|
|
|
00
|
|
|
#2 | ||||
|
Membre actif
![]() Inscription : décembre 2004 Messages : 169 ![]() |
Bonjour xinu666,
Je répond un peu vite à ta question avec peut être une grosse incompréhension de ma part. Voici ce que j'ai compris : Tu prépares une requête paramétrée, puis lorsqu'elle est prête, tu lui donnes les paramètres un à un. Comme c'est une requête d'insertion, je ne comprend pas l'utilité de faire de la sorte. Je suppose que tu as une explication, mais dans le cas contraire, pourquoi ne pas tout simplement exécuter une requête d'insertion ? Tu connais la taille exacte en octet de tes paramètres, donc tu peux très bien utiliser un tampon suffisant pour y préparer la chaine sql. De plus, le begin transaction et le commit peuvent être placé pour un grand nombre de requêtes à la suite mais pour une seule à la fois c'est inutile, comme tu l'as compris. Je les mets dans l'exemple juste pour montrer que c'est faisable. Voici un exemple rapide (non testé) : Code :
Oups... strreplace() est une fonction repiquée sur la toile ou au bureau... de toutes façons, on en a tous une plus ou moins identique à celle-ci : Code :
A moins que je sois à côté de la plaque. Dans ce cas ... sorry, a+ |
||||
|
|
00
|
|
|
#3 | |
|
Membre du Club
![]() Inscription : juillet 2006 Messages : 67 ![]() |
Pense aussi à utiliser la commande PRAGMA synchronous qui a une incidence sur la vitesse. De mémoire d'après certains tests que j'avais fait on était presque 10x plus rapide en mode OFF... mais faut pas craindre de corrompre la base !
Citation:
|
|
|
|
00
|
|
|
#4 |
|
Invité de passage
![]() |
et merci à vous deux,Effectivement bigane tu as raison, mon code copier coller et un vestige de mes tests pour des requêtes d'insertions massives et n'a donc plus lieu d'être vu que je ne fais plus de traitement massif de données Par contre, effectivement ce matin je viens de lire un article sur le PRAGMA synchronous a mettre en mode OFF et effectivement cela permet de diminuer le temps d'exécution par 10 , mais deux questions me vienne : - Le pragma synchronous mode off ne s'applique t'il pas simplement a des requêtes de type prepare ou prepare_V2, je crois avoir lu sa mais je ne suis pas sur ? (d'ailleurs si quelqu'un sait ce qu'est un pragma car a part exécuter en mode sécurisé je sais pas et je n'ai pas eu le temps de me renseigner - Est ce que la possibilité de corrompre la base est grande à l'origine ou y a t'il des facteurs déterminant exemple lors de traitement en concurrence d'accès ou autres ? merci pour toutes vos réponses très intéressantes |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() |
Petit up pour dire que le pragma en OFF m'a fait diminuer mon exécution de 50% c'est incroyable et en même temps sa me fait un peu peur, j'ai pas envie de corrompre la base car les données sont importantes quand même lol !
Je tiens à préciser que le système sur lequel je bosse une fois en place à une petite batterie interne qui permet de le maintenir actif quelques minutes je pense donc que le risque est moindre bon j'espère avoir de vos nouvelles
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com