我使用存储在名为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#中进行计算是否更有效?
答案 0 :(得分:8)
在对象的属性/方法中,在C#/ VB.NET(您的.NET代码)中。
执行像这样的简单属性的时间是没有与调用数据库进程外的时间(首先获取行)或传输时间相比一个网页;只要将它用于UI显示,你就永远不会注意到它。此外,它位于您的易于扩展的硬件(应用服务器)上,并且不会每天涉及大量更新,并且仅针对实际显示的行执行,并且仅在您实际查询此属性/方法时执行。 / p>
答案 1 :(得分:0)
您是否发现这确实会导致性能问题?我不认为这会非常糟糕,因为计算是非常简单的数学。
但是,如果你真的关心它,我的方法是基本上在tb_player表中设置一个“playvalue cache”列。此列将存储当天每位玩家计算的“游戏价值”。将cronjob或计划任务设置为每天午夜运行,并使用新的一天的值更新此列。
然后其他所有内容都可以简单地选择此列而不是进行计算,而您只需每天进行一次计算。