【问题标题】:Symfony Doctrine optimisationSymfony 原则优化
【发布时间】:2013-11-18 14:52:07
【问题描述】:

我在 USER 和 CATEGORY 表之间有 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 分析器报告执行了 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 使其更快?

谢谢, 米洛斯

【问题讨论】:

  • ->addSelect('c') 将导致从您的查询中返回类别(而不是延迟加载它们)。
  • 是的,就是这样。谢了!!!
  • @Cerad 请发表您的评论作为答案,以便我接受。再次感谢!

标签: php symfony doctrine-orm doctrine


【解决方案1】:
->addSelect('c') 

将导致从您的查询中返回类别(而不是延迟加载它们)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    • 2022-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    相关资源
    最近更新 更多