目前我雇用的公司通过mysql进行商店页面访问,以便为其客户提供每日流量统计信息。表结构是:
visit_id,page_id,ts,ip,uri,site_id
到目前为止,有8500万行......当时只有2200个帐户。
将统计信息吐出到客户端的格式为:
总访问量:XXXX 过去24小时访问:XXXX
在保持当前功能的同时重组这个的最佳方法是什么?
答案 0 :(得分:1)
我猜测访问日期是在一个单独的访问表中,如果你反规范化,你将获得更好的吞吐量。
预先计算结果将使您的统计信息查询运行得更快,下面是您要做的一般概念。
CREATE TABLE stats_table (
, site_identifier INT
, date_visited DATE
, visit_count INT
, INDEX(site_identifier)
);
相反,每次访问都会插入此表,您将增加访问次数。然后你可以像下面这样查询:
SELECT site_identifier, visit_count FROM stats_table where date_visited = 'today';
SELECT site_identifier, SUM(visit_count) AS `total_visits` FROM stats_table GROUP BY site_identifier;
您可以将这两个查询结合起来,但单独查询它们会更快。