我正在 MySQL 中构建一个数据库,该数据库将由 PHP 脚本访问。我有一个表,它是事件流。这包括网站上发生的所有事情(许多不同的事情、喜欢、投票等)。在此事件流中,我将根据每个用户的事件运行算法并显示相关事件。在事件上运行算法后,我应该创建另一个表来存储每个用户的事件,还是应该在每次用户访问网站时在事件表上运行算法?
更新:(这就是上面的内容,只是希望以更容易理解的方式重新表述)
我有一个名为activity
的数据库表。每次用户在网站上执行操作时,此表都会创建一个新行。
每次用户登录时,我都会对适用于他们的表(activity
)中的新行(自用户上次登录以来)运行算法。例如,如果用户正在关注在事件流中对帖子进行投票的用户,则该帖子将在用户登录时显示。我希望用户能够访问以前应用于他们的内容。创建另一个表来保存已经用算法运行过的行(除了附加到单个用户名之外)是否是最简单的? (一行可以应用于多个不同的用户)
最佳答案
我将从一个表和适当的索引开始。使用 union 语句,您可以执行多个查询(使用不同的索引),然后将所有结果混合在一起。
举个例子,假设您与用户 37、42 和 56 是 friend ,并且您对篮球和编织感兴趣。并且,假设您有一个关于 user_id 的索引和一个关于 subject 的索引。这个查询应该相当高效。
SELECT * FROM activity WHERE user_id IN (37, 42, 56)
UNION DISTINCT
SELECT * FROM activity WHERE subject IN ("basketball", "knitting")
ORDER BY created
LIMIT 50
关于php - 以下哪种方法可以提供最快的页面加载速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5204515/