Como otimizar a consulta MySQL (grupo e ordem)

Ei tudo, eu tenho uma consulta que precisa de otimização. Ele funciona, mas é um cão, desempenho sábio.

Está escrito assim:

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

Estou acompanhando visualizações para páginas diferentes e quero saber a página mais alta por sessão, para saber até que ponto elas clicaram (precisam ver todas as páginas até o final) em qualquer sessão.

Basicamente, o que estou tentando fazer é ORDER os resultados antes do GROUP. Que o acima alcançado, a um custo significativo.

Alguém que pode me dar um tapa na cabeça com como fazer isso? Obrigado rapazes!

Atualizar:

O Explain:

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

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

O esquema:

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       

Informação do Índice:

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

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

questionAnswers(4)

yourAnswerToTheQuestion