我需要跟踪用户的所有登录,以便他们每次登录时我都有他们登录的时间戳。最有效和最好的方法是什么?
我总是通过在users表中设置一个文本字段来实现这一点,该字段存储由字符分隔的unix时间戳。每次登录时,都会在末尾添加另一个时间戳。
1243453458|1255476933|1263453743|1318495068|这是一种糟糕的做法吗?我认为一个单独的登录表,每次任何用户登录时都有一行,这是完全夸张的,并且在检索此信息时会对数据库造成更大的压力。
请记住,我在PHP中处理这些时间戳,并使用jQuery从数据中创建图形。
发布于 2012-03-07 19:49:36
是的,这是一种可怕的存储任何东西的方法,包括时间戳,而且还有更好的方法来做到这一点。即使是最简单的表也能为您提供更好的性能:
user_id (int) | last_login (timestamp),
换句话说,通过试图优化应用程序(基于错误的假设-“另一个表太紧张了”),你已经悲观了它,提出了一个全面的低效解决方案。不要把事情搞得过于复杂;当你有疑问的时候,描述两种选择,自己去看看。
发布于 2012-03-07 19:43:47
您可能更好地将其放入数据库中的一个单独的表中,如下所示:
members_logins
member_id (int) | timestamp (timestamp)这意味着它将更容易地进行操作。
发布于 2012-03-07 19:40:56
在mysql中,您可以使用时间戳
看看here如何配置它
编辑:您的竖线分隔方法不好。您可以有一个transactions表来存储各种用户事件。
https://stackoverflow.com/questions/9600790
复制相似问题