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