计算行数或存储值MySQL

时间:2014-01-24 01:15:19

标签: mysql sql database

我想看看有多少不同的用户已连接到某个网站,但不确定我是否应该计算用户数据库中的行数,或者存储一个单独的值,该值会在每次用户注册时递增。

使用值有什么好处,而不是在速度,可靠性等方面对行进行计数。

感谢。

2 个答案:

答案 0 :(得分:1)

如果表格不大(你没有很多用户),你应该使用计数。

如果您有一个巨大的表,最好使用另一个表来存储用户数,或者如果大概的行数足够,您也可以使用SHOW TABLE STATUSref

您在这里有一些实用工具信息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,它可以为访客(普通访问者)和注册用户提供服务。