数据库优化 - 有一个总字段或查询表?

时间:2010-12-25 07:54:45

标签: database-design running-total

我有一个应用程序,用户可以获得他们执行的操作的积分 - 简单操作1分或困难操作2分。 我希望向用户显示他在我的应用中获得的总分数以及本周获得的分数(从星期一到午夜)。

我有一张表记录所有行动,以及他们的时间和点数。

我有两种选择,我不确定哪种更好:

  1. 每次用户看到报告时都会执行查询并汇总用户获得的积分
  2. 向每个用户添加两个字段,记录到目前为止获得的点数(总计和每周)。每周积分值将在每个星期一午夜设置为0。
  3. 第一个选项更容易,但我担心因为我会收到很多用户和操作查询需要很长时间。

    第二个选项掩盖了行动表与汇总值之间不一致的风险。

    我对你认为最好的选择非常感兴趣。

    谢谢, 道连

2 个答案:

答案 0 :(得分:0)

选择一个。 稍后缩放

我的想法是采用更简单的方法每次查询表格,当您遇到网站上有这么多用户的问题时,它会降低服务器速度,那么您可以在那时进行切换。如果你有这么多用户使你的服务器速度变慢,那么你可能也需要扩展你的应用程序的其他部分,但是在这些早期阶段不要过分强调你的应用程序。需要缩放时缩放。

我的观点取自37signals的书“Getting Real”,第4章 - Scale Later http://gettingreal.37signals.com/ch04_Scale_Later.php

答案 1 :(得分:0)

两种解决方案都能同样有效。你自己说得对:第一种选择将更容易实现,但每次用户进入得分页面时都需要总结得分。另一方面,对于第二种替代方法,您只需要在用户表中添加和维护另外两个属性。如果您仔细编程,这很难将您的应用程序的完整性置于危险之中。