Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/07/2011, 11h07   #1
Membre du Club
 
Homme
Développeur Web
Inscription : juillet 2009
Messages : 54
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juillet 2009
Messages : 54
Points : 27
Points : 27
Par défaut Optimisation d'une requête

Bonjour,

Je dois faire une requête croisée sur 2 tables, l'une de 70.000 entrées (liste des établissements scolaires français), et l'autre de 5.000 (mes contacts dans ces établissements) :

Code :
1
2
3
$requete=$connexion->query("SELECT * FROM educ_nat LEFT JOIN mes_contacts ON educ_nat.CODE_GESTION = mes_contacts.CODE_GESTION 
ORDER BY educ_nat.CodePostal
LIMIT $premiereEntree, nbParPage");
Sans le "ORDER BY CodePostal", la requête est rapide, par contre dès que j'ajoute "ORDER BY CodePostal" on passe à plusieurs dizaines de secondes

J'ai vu qu'en créant des index on pouvait obtenir de meilleures performances, mais je vois pas comment m'y prendre... Surtout que le champ "CodePostal" n'existe que dans une des deux bases...

Vos lumières sont bienvenues

Merci d'avance
gambic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 11h29   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
les index servent à optimiser tes recherches, en gros c'est tes champs clés avec lequel tu fais le plus de requêtes,

pour toi ça serai :

educ_nat.CODE_GESTION
mes_contacts.CODE_GESTION

tu peux toujours essayer de mettre educ_nat.CodePostal en index aussi, mais c'est un peu différent pour ORDER BY
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/07/2011, 11h32   #3
Membre confirmé
 
Avatar de Retrokiller069
 
Homme Bertrand
Étudiant
Inscription : octobre 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 216
Points : 268
Points : 268
Bonjour,

j'ai peut être une autre solution. Tu pourrais trier ton résultat dans PHP, je ne sais pas si se sera plus rapide mais je sais qu'il existe des systèmes de trie de tableau plutôt performant comme ceci:

Code :
1
2
3
4
5
6
//$tableau à 2 dimensions,$entreprise les éléments à trier
foreach ($tableau as $key => $row) {
				    $entreprise[$key]  = $row[1];
				}
 
				array_multisort($entreprise, SORT_ASC, $tableau);
moi je l'utilise et je trouve que c'est assez rapide mais en même temps je n'ai pas la même quantité d'information que toi
En espérant t'avoir aidé
__________________
Ce n'est pas ce que nous voulons faire qui est impossible mais ce sont les moyens à sa mise en oeuvre qui peuvent le paraître

Ps: N'oubliez pas SVP
Retrokiller069 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/07/2011, 10h34   #4
Membre du Club
 
Homme
Développeur Web
Inscription : juillet 2009
Messages : 54
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : juillet 2009
Messages : 54
Points : 27
Points : 27
Merci pour vos réponses. J'ai commencé par la solution de stealth35 (index sur les champs "CODE_GESTION") et mon problème est réglé!
gambic est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h28.


 
 
 
 
Partenaires

Hébergement Web