用于网页访问者统计的SQL数据库查询优化

时间:2010-09-27 11:04:17

标签: mysql sql database query-optimization

我正在尝试基于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。

1 个答案:

答案 0 :(得分:0)

首先制作一个表(天),一年中的所有日子。

E.g。 select count(distinct ip),day.starttime 来自日志 在day.starttime和day.endtime之间的log.time上的内连接天数 其中log.time介于201009200000和201009210000之间 按ip分组,day.starttime

或类似的东西