存储/阅读和检查用户是否阅读过博文

时间:2014-01-27 20:40:52

标签: php mysql database mobile foreach

我正在建立一个博客风格的CMS用于学习,并希望重新做一个功能。

目前,如果您查看博客(并且已登录),则会根据查看时间以及该博客的ID设置Cookie。

在主页上,使用foreach循环回显博客。

进行检查以查找与博客ID匹配的cookie,如果匹配,则检查cookie的时间与博客更新后期的时间。

如果匹配,它还可以检测用户是否阅读了该博客。

这是有效的,但我的做法是针对移动专注的网站,而交叉设备则无法正常工作。我需要它为用户提供连续性。

我的想法是将数据库表格布置为

ID, blog_id, user_id, view_date

然后,当显示所有博客时,我可以参考此表并在设备上保持相同的统计信息。现在问题是......

要做到这一点,我需要一个foreach,在foreach。这不建议我知道,但我不记得如何做其他明智的事情?

另外假设,我有1000个用户,他们都浏览了20个博客。那是一张有20k行的桌子。

这是一个问题吗?检查每个博客的数据库?

或者我是偏执狂,而php / DB比我想的更强大?

或者......有更好的解决方法吗?

1 个答案:

答案 0 :(得分:0)

简短回答:你有点偏执,对于MySQL数据库来说,20k行是没有用的。

答案越长:你需要的是:

  1. 表上的正确索引,因为您必须进行查找。假设您的用户数量总是超过(已查看)博客的数量,最好在blogId, userId上创建索引,因此您只需查看几条记录。

  2. 正确的查询,例如:

  3. SELECT
        view_date
    FROM
        tableBlogView
    WHERE
        userId = #fill in userId# AND
        blogId = #fill in blogId#
    

    这样你就不需要为每一个这样的

    进行预告