Jak zoptymalizować zapytanie MySQL (grupa i zamówienie)

Hej wszystkim, mam pytanie wymagające optymalizacji. Działa, ale jest psem, mądrym w wykonywaniu.

To brzmi tak:

SELECT  *
FROM    (
        SELECT  *
        FROM    views
        WHERE   user_id = '1'
        ORDER BY
                page DESC
        ) v
GROUP BY
        v.session

Śledzę widoki na różnych stronach i chcę znać najwyższą stronę na sesję, aby wiedzieć, jak daleko przeszli (są zobowiązani do przeglądania każdej strony aż do końca) w dowolnym podanym sesja.

Zasadniczo staram się zamówić wyniki przed GRUPĄ. Co powyższe osiąga przy znacznych kosztach.

Ktokolwiek może mnie uderzyć w głowę, jak to zrobić? Dzięki chłopaki!

Aktualizacja:

Wyjaśnienie:

"1" "PRIMARY"   "<derived2>"    "ALL"   \N  \N  \N  \N  "3545"  "Using temporary; Using filesort"

"2" "DERIVED"   "views" "index" \N  "page"  "5" \N  "196168"    "Using where"

Schemat:

ID       int(8) unsigned  (NULL)     NO      PRI     (NULL)   auto_increment  select,insert,update,references         
page     int(8)           (NULL)     YES     MUL     (NULL)                   select,insert,update,references         
user_id  int(8)           (NULL)     YES             (NULL)                   select,insert,update,references         
session  int(8)           (NULL)     YES             (NULL)                   select,insert,update,references         
created  datetime         (NULL)     NO                                       select,insert,update,references       

Informacje o indeksie:

views            0  PRIMARY              1  ID           A               196008    (NULL)  (NULL)          BTREE    

views            1  page                 1  page         A                  259    (NULL)  (NULL)  YES     BTREE 

questionAnswers(4)

yourAnswerToTheQuestion