Symfony doctrine查询具有连接性能

时间:2016-03-17 13:59:13

标签: performance symfony doctrine

我使用join -

运行下一个查询
Map.map

并在一个查询中选择所有产品尺寸。没有$this->createQueryBuilder('products')->select('products') ->leftJoin('products.sizes', 'sizes')->addselect('sizes'); 我有超过50个查询。但总的应用时间少于第一个例子。我在第一个例子中做错了什么?

1 个答案:

答案 0 :(得分:0)

如果您执行 addSelect ,则Doctrine将只执行一个查询,该查询将获取您需要的所有信息并在一个对象中进行水合。如果那时你做了

foreach($products as $product){
  foreach($product->getSizes() as $size(){
     echo $size->getStuff();
  }
}

Doctrine不会做任何额外的查询。 如果省略 addSelect ,则Doctrine将针对您的每种产品大小执行查询。现在,您必须挑战您的应用程序,看看什么是最佳解决方案。 在某些解决方案中,一个大的查询/水合作用比十几个小查询执行得更好。每个应用程序都会有不同的反应。