计算一段时间的记录视图

时间:2013-10-05 12:06:25

标签: mysql sql

我有一个有很多记录(文章)的数据库,目前我通过计算视图来跟踪每条记录被查看的次数,因此我可以选择像“查看前5篇最受欢迎的文章”这样的内容。

这是通过一列整数完成的,每当检索到记录时,整数计数都会增加1。 这很好但是由于计数系统非常简单,我只能看到“所有时间”的视图。

我希望能有类似“看本周最受欢迎的5篇文章”。

我能想到的唯一方法是创建一个单独的表,在查看文章时使用文章Id和Date创建记录,然后在有限的时间段内创建SELECT语句。 这可能很容易,但同时表格会非常大。

有没有更好的方法来完成同样的事情?我已经在许多网站上看到了排序标准,但我不知道这是如何实现的。

有任何想法或意见吗?

提前致谢:)

1 个答案:

答案 0 :(得分:1)

不是每篇文章的每个视图都有一行,而是每天都有一行。查看文章时,您可以:

INSERT INTO article_views (article_id, date, views)
VALUES (@article, CURRENT_DATE(), 1)
ON DUPLICATE KEY UPDATE views = views + 1;

然后获得过去一周观看的前5篇文章:

SELECT article_id, SUM(views) total_views
FROM article_views
WHERE date > NOW() - INTERVAL 7 day
GROUP BY article_id
ORDER BY total_views DESC
LIMIT 5

为了防止表格过长,您可以定期删除旧记录。