如果不需要某些非常昂贵的字段,我需要防止它们被选中。
我在数据库中有一个多边形字段,只需要在需要时选择一次。对于集合仅当直接选择此字段时,才应加载该字段,甚至不要将其显示在结果SELECT * FROM
部分中。这是我一直在寻找的generell。将收集数据减少到字段的子集以提高sql性能。
例如,如果数据库是远程数据库,那么我将尽可能少的信息从sql服务器传输到php服务器。
在几何数据的情况下,这些单独的字段最终可能非常庞大。
我知道事后我可以过滤集合。我已经将Apigility与FilterInterface一起使用。这有助于最小化从php服务器传输到客户端的数据,而不是从mysql服务器传输到php服务器的数据。
/**
* @ORM\OneToMany(targetEntity="ContactSearchprofile", mappedBy="contact", cascade={"all"}, orphanRemoval=false)
*/
private $searchprofiles;
public function getSearchprofiles() {return $this->searchprofiles;} // will select everything
在内部,它仅应执行repo->select("The, Fields, I, Want")->where('id = :contact_id');
而不是select("*")
。