假设我想在 Web 应用程序中添加记录用户操作的功能。我的表架构将类似于以下内容:
tbl_history
:
+----+---------+--+-----------+
| id | user_id | | action_id |
+----+---------+--+-----------+
| 1 | 1 | | 1 |
| 1 | 1 | | 2 |
| 1 | 2 | | 2 |
+----+---------+--+-----------+
用户可以生成许多操作,因此我需要对这段历史记录进行分页。为了做到这一点,我需要计算出用户的总行数,然后计算应该有多少页数据。
如果我让数百名用户每天生成数千行数据,哪种方法最有效?
一个)
使用 MYSQL 的函数来查询特定用户COUNT()
的表中的数据行数。tbl_history
二)
有另一个表,它将为表中的用户保留历史计数tbl_history
。
+---------+--+---------------+
| user_id | | history_count |
+---------+--+---------------+
| 1 | | 2 |
| 2 | | 1 |
+---------+--+---------------+
这将使我能够在不到 1 毫秒的时间内通过简单的查询立即获得总行数。
权衡是我将需要执行更多查询来更新每个用户的计数,并再次在页面加载时。
使用哪种方法更有效?或者有没有其他更好的方法?任何技术解释都会很棒。
提前致谢。