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 中的页面浏览量。更好的方法?的主要内容,如果未能解决你的问题,请参考以下文章