Optimiser un meu déroulant

JBLCN
Invité n'ayant pas de compte PHPfrance

01 oct. 2007, 11:44

Bonjour à tous

J'ai intégré dans une page PHP une liste déroulante alimentée par une table mysql (et donc une requête sql). L'affichage de la page est tout à fait correct.

J'ai voulu placer un ordre d'affichage par un ORDER BY sur la requête qui alimente cette liste déroulante et là mon affichage est très ralenti.

Existe t'il un moyen d'accélerer cette affichage par un paramétrage de la base/table Mysql ou par un autre procédé ?

Grand merci de vtre aide.

d0m
Mammouth du PHP | 1141 Messages

01 oct. 2007, 11:53

tu peux essayer de trier en php les résultats de ta requete pour voir si c'est plus rapide.

JBLCN
Invité n'ayant pas de compte PHPfrance

01 oct. 2007, 12:18

Bonjour

De quelle manière ?

Merci de ta suggestion

Eléphant du PHP | 73 Messages

01 oct. 2007, 12:23

Il y a plusieurs possibilités, mais tout dépends du volume de données à ramener.

* optimiser la base de données en posant un indexe sur le champ à trier.
* faire faire le tri à PHP à l'aide d'une fonction sort (voir doc PHP)

Aprés, il faut étudier plus précisément le problème avec une vue sur le code, la structure de la table
et la requête exécutée...

JBLCN
Invité n'ayant pas de compte PHPfrance

01 oct. 2007, 12:24

Je vais tester cela.

Merci de votre aide.

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

01 oct. 2007, 12:44

Oubliez le tri par PHP, il n'y a aucune chance pour qu'il soit plus rapide. MySQL trie les données très très rapidement, parce que c'est son boulot.

@JBLCN: tu ne donnes aucune information dans ton message, ni la requête en question, ni le schéma des tables (pourtant indiqué en gras et en rouge lorsqu'on poste un nouveau sujet), ni une idée sur les données en question. Il n'existe pas d'interrupteur on/off pour accélérer les requêtes, ni de formule magique qui fonctionne sur tout type de requête.

Poste la requête, une description des données, le schéma des tables. Regarde du côté d'EXPLAIN et poste le résultat et peut-être quelqu'un aura une idée de ce qui ne va pas.