Mysql中的页面视图计数.这是更好的方法


Page view counts in Mysql. Better way to do it?

这个想法是显示人们访问某个产品页面的次数。

到目前为止,我已经想出了两个选择。

  1. 在产品表(Mysql)中添加一个名为"views"的新列。

  2. 创建一个名为"product_views"的新表。有3列。Id,产品Id,视图。从那里,您可以使用join来更新和调用视图计数。

所以我想知道哪个选项更好?

取决于你想要什么。我通常在一个表中记录页面视图,如:

ID (int), PRODUCT_ID (int), IP_ADDRESS (varchar(15)), VIEW_TIME (datetime)

,这使我能够通过IP地址计算完整视图或唯一视图,并在表上做一个COUNT(*),并且有访问页面的日志的额外好处。显然,这将增加数据库所需的空间需求。

如果您只打算创建一个产品视图列,那么创建一个存储过程,将产品id作为参数,并在每次运行时将product_view列的值增加1。

Ip地址应为unsigned int(10),您将字符串转换为带有INET_ATON的数字。反之亦然。节省空间,使它更快的排序和过滤ip地址。我有一个表,看起来像这样:

CREATE TABLE statistics 
(
   id INT UNSIGNED NOT NULL AUTO_INCREMENT,
   productid INT(6) NOT NULL DEFAULT 0,
   ip INT(10) UNSIGNED NOT NULL DEFAULT 0,
   event char(1) NOT NULL DEFAULT 'V',
   intervall TIME NOT NULL DEFAULT 0,
   createddate TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
   PRIMARY KEY (id)
);