簡體   English   中英

使用Doctrine和Symfony減少與數據庫的連接

[英]Reduce connect to database with Doctrine and Symfony

我得到所有城市並使用功能進行計數:

foreach ($cities as $city) {
echo $city->getName() . '|' . CityTable::getInstance()->getCount($city->getId(), a). '|' . CityTable::getInstance()->getCount($city->getId(), b). '|' . CityTable::getInstance()->getCount($city->getId(), c);
}

public function getCount($id, $num)
   {
       $q = $this->createQuery('u')
           ->where('city_id = ?', $id)
           ->andWhere('num = ?', $num)
           ->execute();

       return count($q);
   }

這個工作還可以,但是這產生了很多與數據庫的連接。 在foreach中的每次迭代中,函數getCount調用了3次。 如果我在超過1000個城市的城市表中,那么我對數據庫的查詢超過10000個。 我該如何減少呢?

嘗試類似以下查詢:

       $q = $this->createQuery('u')
           ->select('COUNT(u.id) as count')
           ->where('num = ?', $num)
           ->groupBy('city_id')
           ->execute();

如果有足夠的可用內存,請將整個表加載到數組中,然后使用簡單算法將它們循環。 如果您沒有足夠的內存加載數據塊,並在PHP中循環它們。

查詢數據庫是一種簡單的方法(無需費力)。 您將把數據庫查詢減少到幾個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM