Открих 2 (донякъде очевидни) неща, които помогнаха за ускоряване на тази заявка до задоволително ниво:
-
Минимизирайте броя на редовете, които трябва да бъдат сортирани. Чрез използване на индекс в полето 'id' и подселекция за отрязване на броя на записите първо, сортирането на файлове в изчислената колона не е толкова лошо. Т.е.:
SELECT t.value1, (t.value2 * an_arbitrary_float) as SCORE FROM (SELECT * FROM sometable WHERE id = 1) AS t ORDER BY SCORE DESC
-
Опитайте да увеличите sort_buffer_size в my.conf, за да ускорите сортирането на файлове.