J'ai trouvé 2 choses (plutôt évidentes) qui ont aidé à accélérer cette requête jusqu'à un niveau satisfaisant :
-
Réduisez le nombre de lignes à trier. En utilisant un index sur le champ 'id' et une sous-sélection pour réduire d'abord le nombre d'enregistrements, le tri des fichiers sur la colonne calculée n'est pas si mauvais. C'est-à-dire :
SELECT t.value1, (t.value2 * an_arbitrary_float) as SCORE FROM (SELECT * FROM sometable WHERE id = 1) AS t ORDER BY SCORE DESC
-
Essayez d'augmenter sort_buffer_size dans my.conf pour accélérer ces tris de fichiers.