2017-04-07 61 views
1

所以我有一个数据库,其中包含人们点击链接的日志。我所存储的是id,country,referrer-domain,clickedat。最后一列是时间戳。聚合日志记录数据的最佳方式

目前没有很多行,但如果这起飞,它可能是数十到数十万行。什么是查询这样的事情数据库的最佳方式:

  • 时报每天在过去一个月看
  • 前20名的是使用你的链接国家
  • 排名前20的网站引用您的链接

使用COUNT(*)最终会太慢。我已经看到了在每次更新中添加另一个查询的技巧,插入,删除恰好保存在特定的聚合表中。但我不确定这会起作用,因为我想让用户能够选择两个特定的日期。或者我必须在一天之内汇总。

+0

也许NoSQL解决方案可以为你工作。 – Jhn

回答

1

如果您添加一个索引日期列,以便您不需要进行日期/时间计算,则只需使用常规聚合就可以查询它。如果格式正确的查询需要很长时间才会“太慢”。

如果它启动了,请按照描述对数据进行反规范化处理,但不要过早优化它!

+0

这实际上是一个很好的解决方案。它正在慢慢起飞,这个服务正在被一个更大的网站所吸引,该网站希望将它提供给其成员,但这只是更多的总数据,而不是每个用户的更多行数。他们都是相对“小”用户。谢谢! – s1h4d0w