我正在尝试基于tomcat日志构建一个Web日志分析器。
我首先将日志推送到数据库,然后执行一些统计。
现在我遇到了一个问题:
对于给定的数据范围,例如(2010-09-20至2010-09-25),我必须计算每天的访问者,因此我首先逐日分割数据范围:
Split:(2010-09-20,2010-09-25) to (2010-09-20 00:00:00, 2010-09-21 00:00:00), (2010-09-21 00:00:00, 2010-09-22 00:00:00), (2010-09-22 00:00:00, 2010-09-23 00:00:00), (2010-09-23 00:00:00, 2010-09-24 00:00:00), (2010-09-24 00:00:00, 2010-09-25 00:00:00),
然后我使用sql查询每个范围的访问者数量。
例如:
select count(distinct ip) from log where time between 201009200000 and 201009210000 group by ip.
此sql用于计算2010-09-20的访问者。
因此,如果用户请求的数据范围超过一天,我应该连接数据库多次。效率低吗?
任何解决方案?
BWT,我使用MySQL。
答案 0 :(得分:0)
首先制作一个表(天),一年中的所有日子。
E.g。 select count(distinct ip),day.starttime 来自日志 在day.starttime和day.endtime之间的log.time上的内连接天数 其中log.time介于201009200000和201009210000之间 按ip分组,day.starttime
或类似的东西