Php Symfony学说优化
我有MN用户和类别表之间的关系。当用户的兴趣超过100个时,就会出现问题。当我执行如下非常简单的查询时:Php Symfony学说优化,php,symfony,doctrine-orm,doctrine,Php,Symfony,Doctrine Orm,Doctrine,我有MN用户和类别表之间的关系。当用户的兴趣超过100个时,就会出现问题。当我执行如下非常简单的查询时: return $this->createQueryBuilder('usercategory') ->innerJoin('usercategory.user', 'u') ->innerJoin('usercategory.category', 'c') ->where('u.id = :user_id')
return $this->createQueryBuilder('usercategory')
->innerJoin('usercategory.user', 'u')
->innerJoin('usercategory.category', 'c')
->where('u.id = :user_id')
->setParameter('user_id', $user_id)
->getQuery()
->getResult();
Symfony profiler报告说,执行100多个查询的时间超过150毫秒。90%的查询看起来像
SELECT t0.category_name AS category_name1,t0.type AS type2, t0.status AS status3, t0.category_id AS category_id4, t0.parent_id AS parent_id5 FROM categories t0 WHERE t0.category_id = ?
这意味着,若用户有100个类别,则条令将执行100个查询以获取所有类别
我是否做错了什么,以及如何使用DQL使其更快
thx,
米洛斯
将导致从查询返回类别(与延迟加载相反)。->addSelect('c')将导致从查询返回类别(与延迟加载相反)。是的,就是这样。谢谢@Cerad请将您的评论作为答复,以便我可以接受。又来了!
->addSelect('c')