php - 以下哪种方法可以提供最快的页面加载速度?

标签 php mysql database database-design

我正在 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/

相关文章:

php - 数据表无法正确读取 JSON 数据

mysql - 查询MySQL时多少字段过多?

mysql - 当我尝试将其导入到我的 phpmy 管理员时收到错误 #1067 - 默认值无效

database - 尝试在我的环境中设置 Postgres,但似乎无法获得对 intidb 的权限

Android 将数据库从内部存储复制到外部存储

PHP, in_array, 0 值

php - php-http/discovery 插件 1.15.1 是否仍然用自己的模块破坏 Contao 4.13 中的 Composer 安装?

php - 为什么MySQL不支持毫秒/微秒精度?

php - 将 mysqli 分页转换为准备好的语句分页

database - oracle 无法登录sqlplus