requete mysql très lente
Posté : 28 mai 2013, 15:09
Bonjour à toutes et tous
188 secondes pour une requete, c'est long, non?!
J'en conclue que je dois mal faire les choses. Voilà mon problème, j'espère que je vais être suffisamment clair :
J'ai 4 tables qui correspondent à des tables-adhérents. Il faut que j'ajoute une colonne "mot_de_passe" dans chacune d'entre elles, et que j'assigne un mot de passe arbitraire à chaque famille , de chaque table. (un nombre à 4 chiffres, que j'incrémente de 1 à chaque fois) sachant que chaque famille a déjà un code_famille attribué.
Voilà comment j'ai programmé :
... et comme je débute en php/mysql, je suis certain que vous pourrez m'aider.
Merci à vous
188 secondes pour une requete, c'est long, non?!
J'en conclue que je dois mal faire les choses. Voilà mon problème, j'espère que je vais être suffisamment clair :
J'ai 4 tables qui correspondent à des tables-adhérents. Il faut que j'ajoute une colonne "mot_de_passe" dans chacune d'entre elles, et que j'assigne un mot de passe arbitraire à chaque famille , de chaque table. (un nombre à 4 chiffres, que j'incrémente de 1 à chaque fois) sachant que chaque famille a déjà un code_famille attribué.
Voilà comment j'ai programmé :
$res = mysql_query(" SELECT nom, prenom, code_famille FROM adherents UNION DISTINCT
SELECT nom, prenom, code_famille FROM adherents_atelier UNION DISTINCT
SELECT nom, prenom, code_famille FROM adherents_ass_mat UNION DISTINCT
SELECT nom, prenom, code_famille FROM adherents_activites_familles ORDER BY code_famille"); // Selection des adhérents regroupés par famille
$mdp = 1000; // initialisation du mot de passe à 1000;
while ($donnee = mysql_fetch_array($res)){ // on parcourt l'ensemble de tous les codes_famille des 4 tables
$code_famille = $donnee['code_famille'];
mysql_query("UPDATE adherents SET mdp = '$mdp' WHERE code_famille = '$code_famille'");
mysql_query("UPDATE adherents_atelier SET mdp = '$mdp' WHERE code_famille = '$code_famille'");
mysql_query("UPDATE adherents_ass_mat SET mdp = '$mdp' WHERE code_famille = '$code_famille'");
mysql_query("UPDATE adherents_activites_familles SET mdp = '$mdp' WHERE code_famille = '$code_famille'");
// mise à jour des tables avec le mot de passe
$mdp ++;
}
Seulement voilà : ce code n'est pas du tout, mais alors pas DU TOUT efficace.... et comme je débute en php/mysql, je suis certain que vous pourrez m'aider.
Merci à vous