У Вас выбрана плохая схема обновления рейтингов. При такой схеме, чем больше комментариев, тем с каждым разом будет труднее их обновлять, ведь придется каждый раз пробегать все записи.
Зачем пересчитывать рейтинг каждый раз для ВСЕХ записей? Попробуйте сделать рейтинг счетчиками, а уж счетчики пересчитывать в проценты или что там у Вас на лету.
К примеру, изначально:
запись 1 - счетчик 1
запись 2 - счетчик 1
запись 3 - счетчик 1
Далее, на запись 2 было сделано последовательно 10 комментариев (при каждом комментарии обновляем счетчик записи), стало
запись 1 - счетчик 1
запись 2 - счетчик 11
запись 3 - счетчик 1
комментарий 1, для записи 2, счетчик, 1
...
комментарий 10, для записи 2, счетчик, 1
Теперь для составления рейтинга нам достаточно найти только максимум по счетчику, приняв его за 100 процентов, в текущем случае будет 11. И ничего не нужно обновлять по крону, никакого перебора записей нам не нужно.
Например на 5 записей:
запись 1 - счетчик 33
запись 2 - счетчик 78
запись 3 - счетчик 3
запись 4 - счетчик 22
запись 5 - счетчик 15
Максимум у нас MAX = 78, рейтинг считаем по формуле счетчик зиписи * ( 100 / MAX )
Итого при выборе максимума и любой из записей будет
запись 1 - счетчик 33 - рейтинг 42
запись 2 - счетчик 78 - рейтинг 100
запись 3 - счетчик 3 - рейтинг 4
запись 4 - счетчик 22 - рейтинг 28
запись 5 - счетчик 15 - рейтинг 19
Э... Данная схема будет давать не только абсолютный рейтинг, но и относительный по выбору максимума из выборки записей (извиняюсь за тавтологию). Другими словами, если записи сгруппированы как-то по тегам, то поиск максимума по счетчику с выборкой по тегу будет ранжировать записи относительно этой выборки.
PS. Уф, вот запилил-то... Задавайте вопросы.