Optimisation d'un tri Mysql
6 messages
• Page 1 sur 1
- davidtennis
- WRInaute discret

- Messages: 55
- Inscription: 5 Avr 2007
Optimisation d'un tri Mysql
Bonjour,
J'ai une requête sur mon serveur mysql qui est comme ceci :
SELECT nom,age,photo FROM participants WHERE genre='1' ORDER BY numero DESC
Cette requête est extrêmement lente (0.5s) malgré le fait que dans ma table les champs genre et numero sont des entiers avec INDEX.
Je crois que ce qui est lent est le ORDER BY numero (il doit trier qqes centaines de milliers de champs). Apparemment MYSQL n'utilise pas de clé pour trier le ORDER BY quand la clé utilisée dans le WHERE est différente. Ce qui est mon cas (cf http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html)
Il faudrait pouvoir forcer MYSQL à utiliser l'INDEX numero pour trier. Auriez-vous une solution ?
Merci
J'ai une requête sur mon serveur mysql qui est comme ceci :
SELECT nom,age,photo FROM participants WHERE genre='1' ORDER BY numero DESC
Cette requête est extrêmement lente (0.5s) malgré le fait que dans ma table les champs genre et numero sont des entiers avec INDEX.
Je crois que ce qui est lent est le ORDER BY numero (il doit trier qqes centaines de milliers de champs). Apparemment MYSQL n'utilise pas de clé pour trier le ORDER BY quand la clé utilisée dans le WHERE est différente. Ce qui est mon cas (cf http://dev.mysql.com/doc/refman/5.0/en/order-by-optimization.html)
Il faudrait pouvoir forcer MYSQL à utiliser l'INDEX numero pour trier. Auriez-vous une solution ?
Merci
-

IllusionPerdu - WRInaute discret

- Messages: 141
- Inscription: 11 Mar 2006
Re: Optimisation d'un tri Mysql
Peut être en faisant genre
SELECT nom,age,photo FROM participants WHERE genre='1' AND numero <> 99999999 ORDER BY numero DESC
Avec évidement le 99999999 qui est sur une valeur qui n'hésiste pas ! Avec ceci ca permet que numero soit dans le where et donc ça force l'utilisation de l'index
SELECT nom,age,photo FROM participants WHERE genre='1' AND numero <> 99999999 ORDER BY numero DESC
Avec évidement le 99999999 qui est sur une valeur qui n'hésiste pas ! Avec ceci ca permet que numero soit dans le where et donc ça force l'utilisation de l'index
- longo600
- WRInaute impliqué

- Messages: 896
- Inscription: 24 Fév 2005
Re: Optimisation d'un tri Mysql
je n'utilise pas de base sql, donc, mon commentaire reste au conditionnel (j'utilise 4D depuis 20 ans, et comme je connais bien, je m'y tient).
En règle générale, si un champ est indexé, le tris doit se faire sur un index non?
le tris sur des numérique est plus rapide que sur des alpha, il me semble?
Si tu utilise un tri régulièrement et qu'un champ te pose problème, tu as la solution de faire un tris permanent sur ce champ.
Ainsi, tu n'aura plus a trier si il y a une demande de tri dessus. Ce seront les autres champs qui devront être triés par défaut.
Si je suis assez clair dans mon explication ...?
En règle générale, si un champ est indexé, le tris doit se faire sur un index non?
le tris sur des numérique est plus rapide que sur des alpha, il me semble?
Si tu utilise un tri régulièrement et qu'un champ te pose problème, tu as la solution de faire un tris permanent sur ce champ.
Ainsi, tu n'aura plus a trier si il y a une demande de tri dessus. Ce seront les autres champs qui devront être triés par défaut.
Si je suis assez clair dans mon explication ...?
-

Leonick - WRInaute accro

- Messages: 19595
- Inscription: 8 Aoû 2004
Re: Optimisation d'un tri Mysql
essaie de voir avec http://dev.mysql.com/doc/refman/5.0/fr/explain.html
- jcaron
- WRInaute accro

- Messages: 2685
- Inscription: 13 Fév 2004
Re: Optimisation d'un tri Mysql
Il te faut impérativement un index sur genre et numero (un index sur les deux colonnes, dans cet ordre, pas un index sur chaque), et il te faut probablement remettre genre dans le order by (order by genre, numero).
Jacques.
Jacques.
6 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- tri (mysql ou php)
- [MYSQL] Tri par date
- Tri sur champ Date Mysql
- [PHP/MySQL] Problème dans le tri
- Mysql 5 : Tri sur nombres négatifs
- option de tri dans une requête mysql
- Requête mysql : Tri complexe des commentaires par votes
- MySQL - Tri d'une table par occurences d'une valeur
- Optimisation MySQL
- Optimisation MySQL - Debian 5
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité
