在CakePHP中,find('count')的成本有多高?

3

我有一个CakePHP应用程序,我想获取用户每种类型的帖子数量。我还使用paginate helper在用户的个人资料上显示所有帖子。
我可以:
1)对用户的所有帖子进行find('all', $conditions)请求,然后解析它以获取所需的计数(逐个检查帖子是否符合要求)。
2)进行多个find('count', $conditions)请求,单独获取所需的所有计数。
3)在创建帖子时维护用户表中的新列,以跟踪这些数字(但这将涉及在创建新帖子时写入用户帐户)。
哪个选择最好?

2个回答

7
从数据库中获取所有记录并在PHP中进行计数是非常浪费的。这正是数据库存在的原因。 find('count') 只是执行像 SELECT COUNT(*) FROM … WHERE … 这样的SQL查询,这确实是最快的方法。添加适当的条件以获取所需的计数,您可能需要熟悉SQL以了解这些条件。
如果您正在计算 hasMany 关系,则还有特殊的 counter-caching,您可能需要了解一下。

是的,链接已经过时了五年。我希望你不再使用Cake的1.x版本;不知道当前版本中的等效物是什么。 - deceze
好的。当然,对于新项目使用最新的2.x分支。我会尝试找到当前主题的链接并进行更新。 - user216084

1

有一个问题,其中包含关于分组和计数的有用信息:在CakePHP中使用GROUP和COUNT()函数对年龄进行分组 - icc97

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接