En supposant que votre ensemble de données est trop volumineux pour être stocké en mémoire... Si vous n'avez besoin que des n premiers éléments, vous ne pouvez conserver que les meilleurs résultats en mémoire lorsque vous parcourez les 1 million de lignes. Cela fonctionnerait également avec votre idée de table temporaire, en écrivant les meilleurs enregistrements de chaque lot.
Une autre option serait d'écrire une fonction définie par l'utilisateur :
http://dev.mysql.com/doc/refman /5.1/fr/ajout-de-fonctions.html