La requête la plus performante pour "select max in group"?

J'ai un tableau simple des commentaires (id INT, revision INT, comment VARCHAR(140)) avec un contenu comme ceci:

1|1|hallo1|
1|2|hallo2|
1|3|hallo3|
2|1|hallo1|
2|2|hallo2|

Je suis à la recherche d'une instruction SQL qui sera de retour à chaque commentaire avec le plus de révision:

1|3|hallo3|
2|2|hallo2|

J'ai trouvé cette solution:

select id, revision, comment 
  from comments 
  where revision = (
      select max(revision) 
        from comments as f 
        where f.id = comments.id
  );

mais il est très lent sur de grands ensembles de données. Sont-il mieux requêtes pour accomplir cette?

source d'informationauteur