我想看看有多少不同的用户已连接到某个网站,但不确定我是否应该计算用户数据库中的行数,或者存储一个单独的值,该值会在每次用户注册时递增。
使用值有什么好处,而不是在速度,可靠性等方面对行进行计数。
感谢。
答案 0 :(得分:1)
如果表格不大(你没有很多用户),你应该使用计数。
如果您有一个巨大的表,最好使用另一个表来存储用户数,或者如果大概的行数足够,您也可以使用SHOW TABLE STATUS
(ref)
您在这里有一些实用工具信息http://dev.mysql.com/doc/refman/5.5/en/innodb-restrictions.html
InnoDB没有在表中保留行的内部计数,因为并发事务可能同时“看到”不同数量的行。为了处理SELECT COUNT(*)FROM t语句,InnoDB扫描表的索引,如果索引不完全在缓冲池中,则需要一些时间。如果您的表不经常更改,使用MySQL查询缓存是一个很好的解决方案。要快速计算,您必须使用自己创建的计数器表,并让应用程序根据其插入和删除更新它。[...]请参阅Section 14.3.14.1, “InnoDB Performance Tuning Tips”。
我希望@GordonLinoff或其他一些sql专家可以为您提供有关何时表格被认为足够大的更多信息。
答案 1 :(得分:0)
他们两个都没有。
我只会在每次点击内容时更新用户的时间戳。
然后你可以获取所有这些时间戳,并可以检查上一次活动的时间。
如果您只是增加一个值,那么您就会遇到一个问题,即您不知道该用户是否已经断开连接。
通过这种方法,您可以完美地了解用户的上一次活动。
这就是在大多数软件中处理它的方式,例如论坛。
如果您记录客户端的IP,它可以为访客(普通访问者)和注册用户提供服务。