【问题标题】:What is the best approach to calculate a formula which changes value each day?计算每天更改值的公式的最佳方法是什么?
【发布时间】:2009-02-25 05:40:32
【问题描述】:

我使用存储在名为 tb_player 的 SQL 表中的以下列:

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

用下面的公式计算一个“playvalue”(整数):

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

我可以随时在网页上显示多达 100 条此类记录以及相关的播放价值。

我的问题是,由于(今天出生日期)的变化,计算这个游戏价值的最有效方法是什么,因为它每天只变化一次?其他值(播放次数和版本)保持不变。

有没有比每次为 100 条记录即时计算更好的方法?如果是这样,在存储过程中或在 VB.NET/C# 中进行计算是否更有效?

【问题讨论】:

  • 你在 SQL 中“排序”这个公式吗?

标签: c# sql vb.net stored-procedures


【解决方案1】:

在对象的属性/方法中,在 C#/VB.NET(您的 .NET 代码)中。

与在进程外调用数据库的时间(首先获取行)或传输时间相比,执行这样一个简单属性的时间没有网页的;如果只是将它用于 UI 显示,您将永远不会注意到它。此外,它位于您易于扩展的硬件(应用程序服务器)上,并且不会每天进行大量更新,并且仅对实际显示的行执行,并且仅在您实际查询此属性/方法时才执行。

【讨论】:

    【解决方案2】:

    您是否发现这实际上导致了性能问题?我不认为这会很糟糕,因为计算是非常简单的数学运算。

    但是,如果你真的关心它,我的方法是基本上在 tb_player 表中设置一个“playvalue 缓存”列。此列将存储当天为每个玩家计算的“游戏价值”。将 cronjob 或计划任务设置为每天午夜运行,并使用新日期的值更新此列。

    那么其他的一切都可以直接选择这一列而不做计算,每天只需要计算一次。

    【讨论】:

      猜你喜欢
      • 2010-09-20
      • 1970-01-01
      • 1970-01-01
      • 2020-02-13
      • 1970-01-01
      • 1970-01-01
      • 2020-09-26
      • 2015-08-21
      • 1970-01-01
      相关资源
      最近更新 更多