哪个更有效率? Count()或对另一个表中的计数的引用?

时间:2013-10-30 17:43:39

标签: php mysql sql performance query-optimization

说我是否想在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毫秒的时间内通过简单查询立即获得行总数。

权衡的是,我需要执行更多查询来更新每个用户的计数,并且还需要再次加载页面。

哪种方法使用效率更高?或者还有其他更好的方法吗?任何技术解释都会很棒。

提前致谢。

0 个答案:

没有答案