为什么加入我的查询比延迟加载慢得多?

时间:2014-03-24 16:01:08

标签: mysql symfony doctrine-orm

我正在使用Doctrine2和Symfony2。我的UserRepository中有一个查询,如下所示:

$qb = $this->createQueryBuilder('u')
        ->addSelect('s', 'p', 'a', 'fp', 'ea', 'c')
        ->leftJoin('u.subscription', 's')
        ->leftJoin('s.plan', 'p')
        ->leftJoin('u.applications', 'a')
        ->leftJoin('u.facebook_pages', 'fp')
        ->leftJoin('u.editable_apps', 'ea')
        ->leftJoin('u.coupons_redeemed', 'c')
        ->where('u = :user')
        ->setParameter('user', $user)
        ;

return $qb->getQuery()->getSingleResult();

根据Symfony分析器,这一个查询大概是 63 ms 。当我注释掉afp左边的联接,而是获取用户对象并执行$user->getFacebookPages()$user->getApplications()时,我有三个查询,其中包含 {{ 1}}

如何使用左连接进行查询与延迟加载相关实体一样快?

0 个答案:

没有答案