【发布时间】:2019-02-21 09:49:17
【问题描述】:
例如,我需要获取评论计数,一种方法是这样的:
public function getActiveReviews()
{
return $this->getReviews()->filter(function(Review $review) {
return $review->isActive() && !$review->isDeleted();
})->count();
}
另一种方法是像这样使用查询生成器:
$qb = $this->createQueryBuilder('r')
->where('r.active = true')
->andWhere('r.deleted = false')
->select('count(r)')
哪种方式会给我带来更好的性能,为什么?
【问题讨论】:
-
这是一个老的但很好的答案,它稍微改进了您的 count(r) 查询以返回单个标量计数,从而提高性能一点点。 stackoverflow.com/questions/9214471/… 是的,使用数据库会快很多倍,除非您已经需要其他内容的评论。
标签: php performance symfony orm doctrine