Каков наилучший подход для расчета формулы, которая меняет значение каждый день? - PullRequest
1 голос
/ 25 февраля 2009

Я использую следующие столбцы, хранящиеся в таблице SQL с именем tb_player:

Date of Birth (Date), Times Played (Integer), Versions (Integer)

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

playvalue = (Today - Date of Birth) * Times Played * Versions

Я могу отобразить до 100 из этих записей с соответствующим значением воспроизведения на веб-странице в любое время.

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

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

?

Ответы [ 2 ]

8 голосов
/ 25 февраля 2009

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

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

0 голосов
/ 25 февраля 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...