Jag har hittat två (slags uppenbara) saker som har hjälpt till att snabba upp den här frågan till en tillfredsställande nivå:
-
Minimera antalet rader som behöver sorteras. Genom att använda ett index på 'id'-fältet och ett underval för att trimma antalet poster först, blir filsorteringen i den beräknade kolumnen inte så dålig. Dvs:
SELECT t.value1, (t.value2 * an_arbitrary_float) as SCORE FROM (SELECT * FROM sometable WHERE id = 1) AS t ORDER BY SCORE DESC
-
Prova att öka sort_buffer_size i my.conf för att snabba upp dessa filsorteringar.