【问题标题】:Is creating a table for the last 30 days efficient or is there a better way?为过去 30 天创建表格是否有效还是有更好的方法?
【发布时间】:2013-01-13 03:09:10
【问题描述】:

基本上我有一个用户可以上传和共享文件的网站。我希望它可以让用户跟踪过去 30 天内的下载量,并能够单独查看这 30 天中的每一天。

我正在考虑创建一个包含 31 列的表,其中 1 列是 id,其余的是 day1、day2、day3 等...之前。

我的问题是这会有效还是有更好的方法来解决这个问题?

【问题讨论】:

  • 只需为每个日期存储一个新的,并动态确定自今天以来已经过去了多少天。您在这里提出的建议是一个非常糟糕的设计,原因有两个:每天需要大量不必要的更新,以及需要您在不同的日子里做几个月的额外逻辑

标签: php mysql


【解决方案1】:

最好有一个链接到文件表的下载表。每次下载文件时,下载表都会创建一条记录。

id
file_id
ip_address
user_agent
created

等等。

然后编写一个查询来确定一天发生了多少下载将是一件很容易的事。

【讨论】:

    【解决方案2】:

    为了准确确定符合您条件的经过天数,我建议您确定当前日期与提交记录日期之间的差异。然后,使用此方法可以让您确定应该包含哪些内容和不应该包含哪些内容,而无需复杂的列结构。

    【讨论】:

      【解决方案3】:

      这不会特别有效。我希望更好的方法是有一张桌子:

      UniqueID
      FileID
      DownloadTimeStamp
      

      并连续记录每次下载。通过适当的索引(FileID、DownloadTimeStamp),可以进行动态分析。

      根据您每天的意思(在某些全球时间,如 UTC,或在用户的时区),您可以将这些汇总到:

      FileID
      Day
      Count
      

      如果分析似乎是性能问题,则减少分析工作。

      【讨论】:

        猜你喜欢
        • 2013-02-23
        • 2011-07-03
        • 2011-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多