2009-02-25 3 views
1

Я использую следующие столбцы, хранящимся в SQL таблицу под названием tb_player:Каков наилучший способ расчета формулы, которая меняет стоимость каждый день?

Дата рождения (дата), Сыграно раз (Integer), Версии (Integer)

вычислить "playvalue" (целое число) в следующая формула:

playvalue = (Сегодня - дата рождения) * Сыгранное * версии

отобразить до 100 этих записей с associataed playvalue на веб-странице в любое время.

Мой вопрос: какой самый эффективный способ расчета этого игрового значения, если он изменится только один раз в день, из-за изменения (сегодняшняя дата рождения)? Другие значения (раз воспроизводимые версии &) остаются неизменными.

Есть ли лучший способ, чем вычисление этого на лету каждый раз для 100 записей? Если да, то эффективнее ли выполнять вычисления в сохраненной proc или в VB.NET/C#?

+0

Вы «ЗАКАЗЫВАТЬ» эту формулу в SQL? – Constantin

ответ

8

В собственности/методе объекта, в C#/VB.NET (ваш код .NET).

Время, затраченное на выполнение простого свойства, такого как , ничего не стоит по сравнению с временем, чтобы вызывать внепроцесс базы данных (для извлечения строк в первую очередь) или время транспортировки веб- страница; вы будете никогда обратите внимание на это, просто используя его для отображения пользовательского интерфейса. Кроме того, это на вашем легко масштабируемом оборудовании (сервере приложений) и не требует огромного обновления ежедневно и выполняется только для строк, которые фактически отображаются, и только если вы действительно запрашиваете это свойство/метод.

0

Вы находите, что это на самом деле вызывает проблемы с производительностью? Я не думаю, что это было бы очень плохо, так как вычисление довольно простая математика.

Однако, если вы действительно обеспокоены этим, мой подход состоял в том, чтобы в основном создать столбец «playvalue cache» в таблице tb_player. В этом столбце будет храниться вычисленное значение «playvalue» для каждого игрока за текущий день. Настройте задачу cronjob или запланированное задание для запуска в полночь каждый день и обновите этот столбец значением нового дня.

Тогда все остальное может просто выбрать этот столбец вместо того, чтобы делать расчет, и вам нужно делать расчет только один раз в день.

Смежные вопросы