如何跨越不同时间轴的行按年龄汇总数据

时间:2014-12-06 04:53:03

标签: php mysql

我有一张超过10,00,000行并且正在增长的巨大桌子。数据看起来像这样

id     topic_id      publish_date            hits
-------------------------------------------------
1        1          2014-01-01               20
2        1          2014-01-01               10
3        1          2014-01-03               10
4        2          2014-01-10               50
5        2          2014-01-15              100
...
...

我有另一个主题包含id,name,start_date,end_date的表。

我需要从每个主题的表日常命中检索命中数据。这将使我能够比较他们每天的表现

例如:

Topic ->            1            2
day
1                   x            y
2                   y            a
3                   z            b

等等。

我希望我做出正确的解释。

我想做的是:

SELECT report.topic_id, topic.start_date,
 SUM(IF( DATEDIFF(report.hits , en.start_date) = 0, hit,0)) as d0
,SUM(IF( DATEDIFF(report.hits , en.start_date) = 1, hit,0)) as d1
,SUM(IF( DATEDIFF(report.hits , en.start_date) = 2, hit,0)) as d2
,SUM(IF( DATEDIFF(report.hits , en.start_date) = 3, hit,0)) as d3
,SUM(IF( DATEDIFF(report.hits , en.start_date) = 4, hit,0)) as d4
,SUM(IF( DATEDIFF(report.hits , en.start_date) = 5, hit,0)) as d5
from report left join topic en on report.topic_id = en.id
where topic_id in (1,2,4)
group by topic_id

生成结果数据需要10-12秒。我正在使用PHP& MySQL的。我愿意通过脚本计算,缓存结果来进行权衡取消db。

有更好的方法吗?我正在寻找更快的方法来检索结果。

0 个答案:

没有答案