Php Symfony学说优化

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')

我有MN用户和类别表之间的关系。当用户的兴趣超过100个时,就会出现问题。当我执行如下非常简单的查询时:

  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')