Mysql 中的页面浏览量。更好的方法?

Posted

技术标签:

【中文标题】Mysql 中的页面浏览量。更好的方法?【英文标题】:Page view counts in Mysql. Better way to do it? 【发布时间】:2014-05-08 20:26:30 【问题描述】:

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

到目前为止,我提出了两种选择。

    在 products 表 (mysql) 中添加一个名为“views”的新列。这似乎是最简单、最快捷的设置方式。

    创建一个名为“product_views”的新表。有 3 列。 id、产品id、浏览量。从那里您可以使用 JOINS 来更新和调用视图计数。

那么我想知道哪个选项更好?

【问题讨论】:

***.com/questions/4762527/… 【参考方案1】:

取决于你想做什么。我通常在表格上记录页面浏览量,例如:

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

这使我能够按 IP 地址计算完整视图或唯一视图,并且只需在表格上执行 COUNT(*),以及记录谁访问该页面的额外好处。显然,这会增加 DB 所需的空间需求。

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

【讨论】:

+1 。 . .这是个好建议。此外,向表中的插入通常比更新更快,因此在数据收集方面有性能优势(通过分析方面更复杂的查询来缓解)。 明白。感谢您的信息。【参考方案2】:

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)
);

【讨论】:

谢谢 :-) @rekaszeru

以上是关于Mysql 中的页面浏览量。更好的方法?的主要内容,如果未能解决你的问题,请参考以下文章

多个页面浏览控制器滚动

有啥方法可以让浏览器页面避免 Pyqt5 中的重定向?

使用 Node.js 从 MySQL 获取数据并显示在索引页面上

java获取浏览器端的时间

利用浏览器调试APP中的H5页面

微信页面在浏览器中打不开的解决方法