Vous n'êtes pas identifié(e).
Bonjour à tous et meilleurs voeux au seuil de cette nouvelle année.
Voilà mon problème :
J'ai trois tables avec des jointures :
isf_ingenieur, isf_diplomes et une table temporaire isf_tempo dans laquelle j'ai mis les modifications que je dois effectuer sur les deux premières (c'est le résultat d'une inclusion de fichier Excel) .
En fonction du résultat du SELECT je mets le champ temp_flag = 1 ou non via un UPDATE à l'intérieur du WHILE.
Cette opération fonctionne, le résultat que j'obtiens est exact, mais elle met beaucoup de temps : près de 40 minutes pour une table isf_tempo de 8.000 lignes. Or je dois traiter des tables plus importantes de 80.000 lignes et plus...
Je me demande donc si je ne peux l'effectuer en une seule transaction qui me permettrait de gagner, peut être, du temps d'exécution.
Quelqu'un parmi vous pourrait-il m'aider ou m'orienter car je sèche sur la solution ?
Un grand merci d'avance.
Jean-Claude l'ancien
Hors ligne
salut, et bonne année à toi aussi
penses à créer des indexes sur les champs que tu utilises dans tes wheres et tes tris
ça devrai diviser par 100 voir 1000 tes temps de traitement
a++
Hors ligne
Merci, Merci, Merci Pierrot !
Grâce à toi l'année commence bien pour moi... :)
J'avais complètement oublié ce point plus qu'important dans les bases de données : l'indexing
J'avais bien indexé certains champs de ces tables pour d'autres processus mais j'avais oublié de le faire pour celui-ci (les champs en cause sont différents)
De ce fait le temps de process est passé de 40 minutes à 34 secondes (et oui tu as bien lu !!!) pour 8000 lignes.
Bravo.:)
Jean-Claude l'ancien.
Hors ligne
c'est juste 80 fois plus rapide
j'étais pas loin dans mes prédictions
a++
Hors ligne
Bonjour,
J'ai hésité longtemps à mettre mon grain de sel, mais si ta base de données avait été modélisée correctement (au moins normalisée de niveau 3), tu n'aurais pas eu besoin d'avoir à rajouter des indexs là où il n'en faut pas juste pour devoir optimiser une requête. Alors tu pourrais me dire, oui mais cela peut arriver quand même que ce besoin survienne, auquel cas je répondrais "certes", mais rien que cette partie là :
démontre le bien fondé de ma remarque.
++
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne