'.$bateaux[$i]['nb_elements'].' : ID = '.$donnees['ID'].'
'; } Liberation_jeu_de_resultat_bdd($reponse); } //------------------------------------------------------------------- // Boucle sur tous les bateaux pour traiter les entrées redondantes: $nb_total_lignes_supprimees = 0; for ($i = 0; $i < $nb_bateaux ; $i ++) { // Boucle sur tous les éléments : for ($j = 0; $j < $bateaux[$i]['nb_elements']; $j ++) { $nb_redondants = 0; $val_1 = -1; $val_2 = 0; $id_2 = 0; $requete = 'SELECT Cle_primaire, Date, Valeur FROM '.$nom_table.' WHERE ID_Bateau=? AND ID=? ORDER BY Date '; $reponse = Requete_preparee_bdd($requete, array( array('i', $bateaux[$i]['ID_Bateau']), array('i', $bateaux[$i][$j])), __FILE__, __LINE__); while ($donnees = Recherche_ligne_bdd($reponse)) { // Recherche des conditions de redondance : if (($val_1 == $val_2) AND ($val_2 == $donnees['Valeur'])) // Si la valeur actuelle est égale à la précédente et à celle encore avant : { $redondants[$nb_redondants ++] = $id_2; // ... on mémorise l'entrée intermédiaire (N-1) $nb_total_lignes_supprimees ++; if ($nb_total_lignes_supprimees >= $max_lignes_traitees) break; } $val_1 = $val_2; $val_2 = $donnees['Valeur']; $id_2 = $donnees['Cle_primaire']; } Liberation_jeu_de_resultat_bdd($reponse); // Suppression des enregistrements redondants : for ($k = 0; $k < $nb_redondants; $k ++) { // Création d'une chaine avec les différentes clés à supprimer afin de réduire le nombre de requêtes DELETE (impact sur temps de traitement d'environ / 50 avec la valeur de 100) : $max_l = 100; $chaine_cles_primaires = '(Cle_primaire='.$redondants[$k ++].' '; if ($k < ($nb_redondants - 1)) { for ($l = 1; $l < $max_l; $l ++) { $chaine_cles_primaires .= 'OR Cle_primaire='.$redondants[$k].' '; if (($k >= ($nb_redondants - 1)) OR ($l >= ($max_l - 1))) break; $k ++; } } $chaine_cles_primaires .= ')'; $requete = 'DELETE FROM '.$nom_table.' WHERE ID_Bateau='.$bateaux[$i]['ID_Bateau'].' AND '.$chaine_cles_primaires.' '; // echo 'Requête = ['.$requete.']Attention : toute la partie Administration n\'est disponible qu\'en français.
'; echo 'Taille de la table AVANT traitement = '.number_format($tables[$x]['Taille_avant_traitement'], 0, ".", " ").' lignes
'; echo 'Le nombre total de lignes supprimées est de '.number_format($tables[$x]['Nb_total_lignes_supprimees'], 0, ".", " ").' (maxi = '.number_format($max_lignes_traitees, 0, ".", " ").') en '.$tables[$x]['Execution_time'].' secondes
'; echo 'Taille de la table APRES traitement = '.number_format($tables[$x]['Taille_apres_traitement'], 0, ".", " ").' lignes
'; } echo '