0
我正在嘗試構建一個基於tomcat日誌的web日誌分析器。針對網頁訪問者統計的Sql數據庫查詢優化
我首先將日誌推送到數據庫,然後做一些統計。
現在我滿足了一個問題:
對於例如(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。
一次查詢所有日子:類似於(語法旁)'SELECT日,COUNT(獨立IP)FROM日誌GROUP BY天ORDER BY日'... – pascal 2010-09-27 11:07:19
但時間格式的文件我的數據庫是「yyyy-MM-dd HH:mm:ss」,因爲我還需要按小時計算訪客數量。 – hguser 2010-09-27 11:24:19
我建議把'201009200000到201009210000'之間的時間改成'where時間> = 201009200000和時間<201009210000' - 這樣可以防止在錯誤的日子報告第二天的第一分鐘記錄的ip。 – 2010-09-27 14:34:38