什么是最佳的数据库模型来存储用户访问并使用IP计算唯一用户,在一个比如100万行的大型数据库中?
SELECT COUNT(DISTINCT ip) FROM visits
但是有1,000,000个不同的IP地址可能导致查询变慢。缓存不会返回真正的数字。
大型统计系统如何计算独立访问量?
SELECT COUNT(DISTINCT ip) FROM visits
但是有1,000,000个不同的IP地址可能导致查询变慢。缓存不会返回真正的数字。
大型统计系统如何计算独立访问量?
有另一个只有IP列和唯一索引的MyISAM表。你会在很短的时间内得到正确的计数(MyISAM缓存表中行数)。
[评论后添加]
如果您还需要统计每个IP的访问次数,请添加一个名为visitCount
的列并使用它。
INSERT INTO
visitCounter (IP,visitCount)
VALUES
(INET_ATON($ip),1)
ON DUPLICATE KEY UPDATE
SET visitCount = visitCount+1
ip
列添加索引,这应该会显著提高速度...
WHERE INET_NTOA(ip) = '127.0.0.1'
,而是使用WHERE ip = INET_ATON('127.0.0.1')
。区别在于:第二个使用索引。 - Mchl