He encontrado 2 cosas (algo obvias) que han ayudado a acelerar esta consulta hasta un nivel satisfactorio:
-
Minimice el número de filas que deben ordenarse. Al usar un índice en el campo 'id' y una subselección para recortar primero el número de registros, la ordenación del archivo en la columna calculada no es tan mala. Es decir:
SELECT t.value1, (t.value2 * an_arbitrary_float) as SCORE FROM (SELECT * FROM sometable WHERE id = 1) AS t ORDER BY SCORE DESC
-
Intente aumentar sort_buffer_size en my.conf para acelerar esos tipos de archivos.