php - 计算用户参与/事件

标签 php mysql

我有一个网站,它使用多个 MySQL 查询来计算用户参与度/事件。

对于典型用户,我会问:

他们进行了多少次更新? 他们上传了多少张照片? 等等等等

这些只是对相关表格、更新、照片的基本 COUNT 查询。然后,我将每个值的 COUNT 个值相加以获得分数。每个查询需要一个JOIN,每个查询大约需要0.0006秒,每个用户总共10次查询,总共0.006秒。

虽然对于一个用户来说还不错,但我必须针对 100,000 个用户、10 分钟的理论处理时间和大约 1,000,000 个数据库查询进行计算。感觉我正在以错误的方式处理这个问题,想知道是否有人有任何想法?

我曾考虑过将用户得分存储在他们的用户记录中,并在每次执行特定操作时增加它,但它不太灵活(我无法返回并查看某一天累积了多少积分)实例)。

非常感谢任何帮助!

最佳答案

有一个user_activity链接表。它需要一个 action_iduser_id 和一个 timestamp。例如,当用户上传照片时,会创建一条 activity_id = 2 的记录(对于从 activities 表引用的“照片上传”), user_id 和当前时间戳。这很容易查询,并且消除了当您拥有无数用户时长时间运行查询的担忧。

关于php - 计算用户参与/事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1563303/

相关文章:

javascript - 当我使用 Ajax 刷新部分页面时,JS、jQuery 不起作用

python - 使用 Python 2.7 更新 SQL 表?

python - Flask、MySQL 和 SQLAlchemy 查询 ID 错误

mysql - 比较 MySQL 时间戳和 NodeJS

php - MYSQL 显示错误::每个派生表都必须有自己的别名 om PHP MYSQL

php - 在 php 中使用多个条件从提交按钮运行 MYSQL 查询

php - Parse.com 查询指针值

php - 在php中下载xls格式的文件后遇到问题

php - 错误 : __autoload() is deprecated, 改为使用 spl_autoload_register()

mysql - MySQL建表时报错 "unsigned"?