Symfony 优化条令性能:选择*是个坏主意?

Symfony 优化条令性能:选择*是个坏主意?,symfony,orm,doctrine,partial,Symfony,Orm,Doctrine,Partial,我们正在尝试优化一个消耗大量内存资源的项目。我们所有的查询都是使用这种轴完成的: $qb->select(array('e')) ->from('MyBundle:Event', 'e'); 这将在选择表的每个字段的查询中转换,如下所示: SELECT t0.id AS id1, t0.field1 AS field12, t0.field2 AS field23, t0.field3 AS field34, t0.field4 AS field45,

我们正在尝试优化一个消耗大量内存资源的项目。我们所有的查询都是使用这种轴完成的:

$qb->select(array('e'))
   ->from('MyBundle:Event', 'e');
这将在选择表的每个字段的查询中转换,如下所示:

SELECT t0.id AS id1,
   t0.field1 AS field12,
   t0.field2 AS field23,
   t0.field3 AS field34,
   t0.field4 AS field45,
FROM event t0
这是一个很好的理想的性能,用于水合只有一些预定义的领域?我真的不知道它是否会影响性能,我会有很多缺点,因为其他字段将为空。在使用条令的select查询中,您使用什么操作

问候。

我的两分钱

我认为水合作用(当然是对象水合作用和延迟加载)是好的,直到您不知道从DB表中提取多少字段以及将哪些字段放入对象。如果您知道必须检索所有字段,最好只获取一次并使用它们,而不是每次都执行耗时的查询

但是,作为一种良好的实践,当我检索并使用我的对象时,我会显式地取消它们的设置(如果它们是我的函数的最后一条指令,将返回并隐式地取消设置它们,则不会)

更新
谢谢@DonCallisto。你能给我举个例子说明你是如何明确地取消设置对象的吗?太好了,@DonCallisto。谢谢你抽出时间!;)
$my_obj_repo = $this->getDoctrine()->getManager()->getRepository('MyBundleName:my_obj');
$my_obj = $my_obj_repo->fooHydrateFunction(12); //here I don't pull out from db all data
//do stuff with this object, like extracting data or manipulating data
if($my_obj->getBarField() == null) //this is the only field I've load with fooHydrateFunction, so no lazy loading
{
  $my_obj->setBarField($request->query->get('bar');
  $entity_manager->persist($my_obj);
  $entity_manager->flush();
}
//here my object isn't necessary anymore
unset($my_obj); //this is a PHP instruction
//continue with my business logic