Ускорение функции бд 'getratesforgroupall'
Для ускорения работы getratesforgroupall предлагаю следующий вариант этой функции.
Тестирование проводилось для семестров с id < 7 и id >= 7. Для этого использовалась программа на Ruby. В файле script.sql находится функция, которую тестируем. Файлы old_group_sem.txt и new_group_sem.txt содержат пары группа семестр, где соответственно семестры с id < 7 и id >= 7.
Результат для семестров с id < 7: 88,983 мс для предыдущей версии vs 21,05 мс для модифицированной
Результат для семестров с id >= 7: 3692,727 мс для предыдущей версии vs 31,983 мс для модифицированной
Для всех этих случаев количество строк (и сами строки) выдаваемых результатов старой функции и предложенной совпадает.