Скорее всего, это будет во многом зависеть от нагрузки на ваш сервер. Несколько предположений для моего ответа:
Ваш расчет, скорее всего, не прост, но будет учитывать множество факторов, включая время, прошедшее с момента публикации
Вы ожидаете как минимум разумного роста вашего сайта, то есть новые данные будут добавлены в вашу таблицу.
Я бы посоветовал вам лучше всего рассчитать и сохранить значение рейтинга, и, как упоминалось в Nuno G, получить с помощью упорядоченного предложения. Как вы заметили, могут быть некоторые последствия, два из которых будут:
- Планирование обновлений
- Обеспечение доступа к столу
Что касается планирования, вы можете найти способы разумного пересчета вашей ценности. Например, вы можете определить, когда вычисления могут быть изменены (например, если обновляется зависимая запись, вы можете запустить триггер, добавив идентификатор вашей таблицы в очередь для пересчета). Вы также можете выполнить обновление в диапазонах, а не в полной таблице.
Вы также захотите свести к минимуму любые блокировки вашего стола, пока вы пересчитываете. Есть несколько способов сделать это, в том числе установить уровни изоляции (используя терминологию MS SQL). Если вы действительно обеспокоены, вы можете даже выполнить свои вычисления извне (например, во временной таблице), а затем просто запустить обновление значений в основной таблице.
В качестве заключительного замечания я бы порекомендовал изучить доступные вам варианты подкачки - если вы говорите о тысячах записей, убедитесь, что ваш механизм определяет необходимую вам страницу на сервере SQL, чтобы вы не возвращали тысячи строк в вашем приложении, так как это замедлит процесс для вас.