PHP和MySQL统计系统

时间:2010-08-17 19:55:02

标签: php sql mysql statistics

用于存储用户访问量的最佳数据库模型是什么,并且在具有1.000.000行的大型数据库中使用IP对唯一用户进行计数?

SELECT COUNT(DISTINCT ip) FROM visits

但是对于1.000.000不同的ip,它可能是一个缓慢的查询。缓存不会返回实数。

大型统计系统对独立访问的重要程度如何?

2 个答案:

答案 0 :(得分:2)

不要使用关系数据库。它不是为存储这类信息而设计的。

你可以试试NoSQL 数据库,例如Mongo(我知道有很多地方用它来记录它们,因为它的开销很小)。

如果你必须坚持使用MySQL,你可以在ip列添加一个索引,这应该可以显着提高速度......

答案 1 :(得分:2)

让另一个MyISAM表只包含IP列和UNIQUE索引。您将立即获得正确的计数(MyISAM缓存表中的行数)

[评论后补充]

如果您还需要计算每个IP的访问次数,请再添加一列visitCount并使用

INSERT INTO 
  visitCounter (IP,visitCount) 
VALUES 
  (INET_ATON($ip),1) 
ON DUPLICATE KEY UPDATE 
  SET visitCount = visitCount+1