【问题标题】:db optimization - have a total field or query table?数据库优化 - 有一个总字段或查询表?
【发布时间】:2010-12-25 07:54:45
【问题描述】:

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

我有一个记录所有动作的表格,以及它们的时间和点数。

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

  1. 每次用户看到报告时,都会执行一次查询并总结用户获得的分数
  2. 为每个用户添加两个字段,记录迄今为止获得的点数(总计和每周)。每周积分值将在每周一午夜设置为 0。

第一个选项更简单,但我担心我会得到很多用户和操作查询将需要很长时间。

第二个选项存在操作表和汇总值不一致的风险。

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

谢谢, 多里安

【问题讨论】:

    标签: database-design cumulative-sum


    【解决方案1】:

    选择选项一。 稍后扩展

    我的想法是采用更简单的方法,即每次都查询表,当您的网站上的用户太多而导致服务器速度变慢时,您可以在那个时候切换。如果您的用户太多以至于您的服务器速度变慢,那么您可能还需要扩展应用程序的其他部分,但不要在这些早期阶段竭尽全力扩展您的应用程序。在需要扩展时进行扩展。

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

    【讨论】:

      【解决方案2】:

      两种解决方案都同样有效。你自己说对了:第一个替代方案实施起来会更容易一些,但每次用户进入分数页面时都需要汇总分数。另一方面,对于第二种选择,您只需要在用户表中添加和维护 2 个附加属性。如果您仔细编程,这几乎不会危及您的应用程序的完整性。

      【讨论】:

        猜你喜欢
        • 2013-08-09
        • 1970-01-01
        • 2012-11-17
        • 2011-02-27
        • 1970-01-01
        • 2017-04-02
        • 2019-03-30
        • 2017-01-11
        • 1970-01-01
        相关资源
        最近更新 更多