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