Requête lente lors de l'utilisation de la COMMANDE PAR

Voici la requête (la plus grande table a environ 40 000 lignes)

SELECT
  Course.CourseID,
  Course.Description,
  UserCourse.UserID,
  UserCourse.TimeAllowed,
  UserCourse.CreatedOn,
  UserCourse.PassedOn,
  UserCourse.IssuedOn,
  C.LessonCnt
FROM
  UserCourse
INNER JOIN
  Course
USING(CourseID)
INNER JOIN
(
  SELECT CourseID, COUNT(*) AS LessonCnt FROM CourseSection GROUP BY CourseID
) C
USING(CourseID)
WHERE 
  UserCourse.UserID = 8810

Si je l'exécute, il s'exécute très rapidement (.05 secondes environ). Il retourne 13 lignes.

Quand j'ajoute un ORDER BY clause à la fin de la requête (commande par colonne) la requête prend environ 10 secondes.

Je suis en utilisant cette base de données en production maintenant, et tout fonctionne bien. Tous mes autres requêtes sont rapides.

Toutes les idées de ce que cela pourrait être? J'ai couru à la requête MySQL Query Browser, et à partir de la ligne de commande. Les deux endroits, il a été très lente avec le ORDER BY.

EDIT: Tolgahan ALBAYRAK solution fonctionne, mais quelqu'un peut-il expliquer pourquoi cela fonctionne?

Pourquoi ça marche? une sous-requête est le résultat d'un ensemble de résultats, et la commande d'un jeu de résultats est beaucoup plus rapide que d'avoir le défaut d'exécution de la requête avez compter de la commande, le long de la manière.

OriginalL'auteur | 2009-05-19