Bonjour à tous,
Pour la mise à jour d'un classement entre différents coureurs (au fur et à mesure du passage de la ligne d'arrivée), je déclenche régulièrement une requete.
Ca fonctionne, mais elle est longue (environ 55 sec).
La table à mettre à jour comporte 34000 enregistrements.
Est-ce qu'il y a moyen de l'optimiser?
Pour éviter de faire 34000 requetes update, j'ai tout mis dans 1 seule avec "SET CASE WHEN THEN" sur les 4 champs à modifier.
Merci d'avance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 //initialisation des variables $tab_temps=$tab_moyenne=$tab_classement_scratch=$tab_classement_categorie=""; $x=0; //on parcours tout le tableau foreach($tableau_des_courses as $course) { foreach($classement[$course] as $c=>$key) { $tab_temps .= "WHEN ".$key['idc_passage_inter']." THEN '".$key['temps']."' "; $tab_moyenne .= "WHEN ".$key['idc_passage_inter']." THEN ".$key['moyenne']." "; $tab_classement_scratch .= "WHEN ".$key['idc_passage_inter']." THEN ".$key['classement_scratch']." "; $tab_classement_categorie .= "WHEN ".$key['idc_passage_inter']." THEN ".$key['classement_categorie']." "; } } $tab_temps .= "ELSE `temps` END"; $tab_moyenne .= "ELSE `moyenne` END"; $tab_classement_scratch .= "ELSE `classement_scratch` END"; $tab_classement_categorie .= "ELSE `classement_categorie` END"; //Et voici la requete $requete = "UPDATE c_passage_inter SET temps = CASE idc_passage_inter $tab_temps, moyenne = CASE idc_passage_inter $tab_moyenne, classement_scratch = CASE idc_passage_inter $tab_classement_scratch, classement_categorie = CASE idc_passage_inter $tab_classement_categorie";
Partager