我有一个MySQL表 views
用于跟踪网页上的视图 . 该表的结构如下:
CREATE TABLE views (
id int(11) not null auto_increment,
page int(11) not null,
pglast DATETIME not null,
pgviews int(11) default 0,
primary key(id),
unique key page (page)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
page
列是要查看的页面的ID, pglast
列用于在上次访问页面时保存 . pglast
通常看起来像:2018-12-03 14:57:57
pgviews
列用于保存访问次数,此列通常如下所示:7
每次访问页面时我都会 not 添加行,但只需 UPDATE
记录:我更新 pglast
列并增加 pgviews
列 .
我想要的是:
显示今天,本月和整年的观看量 .
是否有可能做我想要的,或者我是否必须为访问添加行,访问日期?在页面访问时添加行的缺点当然是,如果有大量访问,它可以变得非常完整,而简单地更新记录更具可扩展性......
1 回答
要在不为每次访问添加行的情况下完成所需内容,您可以执行以下操作:
每次访问都会增加pgviews_day,pgviews_month和pgviews_year . 运行一个cronjob,分别每天,每月和每年重置pgviews_day,pgviews_month和pgviews_year .