2015-01-28 2 views
0

У меня огромная проблема с Yii, так как рендеринг простых вещей занимает более 10 секунд.Yii 1.1 чрезмерное количество запросов, как оптимизировать?

Например:

Контроллер:

public function actionFailed($id=null) { 
    if(!is_null($id)) $this->_viewcity=$id; 
    $failed = Delivery::model()->findAll('failed IS NOT NULL AND city_id = '.$this->_viewcity.' ORDER BY id DESC'); 
    $cities = City::model()->findAll('active > 0'); 
    $this->render('failed',array(
     'failed'=>$failed, 
     'cities'=>$cities, 
     'city'=>City::model()->findByPk($this->_viewcity), 
    )); 
} 

В представлении используется только foreach ($failed as $d).

журнал запросов: http://jsfiddle.net/kwqabmc0/

Как оптимизировать это? Мой SQL-сервер отсылает 23 мс, и предыдущая страница занимает очень много времени для загрузки.

ответ

1

Вы используете ленивую загрузку Delivery.items и Delivery.user на вид.

Попробуйте

$failed = Delivery::model()->with('items', 'user')->findAll('failed IS NOT NULL AND city_id = '.$this->_viewcity.' ORDER BY id DESC'); 

или не использовать эти отношения в представлении.

Смежные вопросы