Aller au contenu

Using temporary; Using filesort pour requête pas compliqué


Sujets conseillés

Posté (modifié)

Bonjour,

J'ai cru comprendre qu'un EXPLAIN qui répond un : Using temporary; Using filesort pour une requête Mysql avait besoin d'être revue pour être optimisée...

Depuis quelques semaines, je fait le tour de mes requêtes en les soumettant à Explain afin de voir si tout va bien, et j'ai un cas de figure bien particulier que je n'arrive pas à cerner d'autant plus que la requête concernée ne me semble pas compliquée...

Structure des tables :

table1(id, texte ..... , prio, last_update) : PRIMARY KEY sur id, index composite sur (prio et last update)

table2(id, zone) : PRIMARY KEY composite sur id, zone et ajout d'un index sur zone

La table1 comprend près de 150 000 enregistrements et la table2 comprend 450 000 enregistrements... On peut dire qu'il y a 3 enregistrement dans table2 pour un enregistrement pour la table1... (1, n)

Requête en question

La requête en question concerne deux tables jointes et comprend un petit tri :

select id, texte, prio, last_update 
from table1
inner join table2 on (table1.id = table2.id)
where table2.zone = 44
order by prio desc, last_update desc
limit 0,10

Explain de la requête :

id select_type table type possible_keys key key_len ref rows Extra

1 SIMPLE table2 ref PRIMARY,zone zone 4 const 162 Using temporary; Using filesort

1 SIMPLE table1 eq_ref PRIMARY PRIMARY 3 table2.id 1 Using where

L'exécution de la requête est plutôt rapide : 0,01 secondes (malgrès le nombre d'enregistrements) cependant, je ne comprend pas pourquoi mysql a besoin de créer une table temporaire et d'effectuer un re-tri pour l'exécution de la requête...

Es ce qu'il y a un oubli ou un rajout de trop au niveau des indexes ?

Es ce qu'il y a une variable serveur à modifier pour éviter ce genre de message.. ?

En espérant que ce que je viens d'expliquer est suffisant pour que vous puissiez m'éclairer ! :)

EDIT : Je crois que cela est lié à l'order by car lorsque je supprime cette clause, je n'ai plus de : Using temporary; Using filesort

Mais cela m'embête car j'ai besoin de mes tri :)

Cordialement,

Modifié par Neoxy

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...