J'ai la requête suivante:Tri par SUM très lent
SELECT SUM(s.count) as count, a.name, s.author_id as id
FROM twitter_author_daily_stats s
JOIN twitter_author a ON s.author_id = a.id
WHERE s.`date` >= '2011-01-07'
AND s.`date` <= '2011-09-21'
AND s.profile_twitter_search_id IN (263)
GROUP BY s.author_id
LIMIT 30;
Il utilise un index (author_id, profile_twitter_search_id, date); c'est rapide (~ 1s); et il renvoie ~ 2500 lignes.
Toutefois, lorsque j'ajoute ORDER BY count
, la requête s'exécute pendant quelques minutes (je n'ai pas pris la peine d'attendre qu'elle se termine).
Ne devrait-il pas prendre les ~ 2500 lignes de la requête originale et trier par colonne count
? Pourquoi cela prend-il autant de temps?
Est-ce que quelqu'un qui a une meilleure connaissance de MySQL peut expliquer?
Je pense qu'il serait préférable de grouper le résultat par 'a.id'. – Karolis