Yii 1.1查询量过大,如何优化?

时间:2015-01-28 14:47:19

标签: php mysql yii

我和Yii有一个很大的问题,因为渲染简单的东西需要10秒钟。

例如:

控制器:

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服务器是23ms平移,前面提到的页面需要很长时间才能加载。

1 个答案:

答案 0 :(得分:1)

您在视图中使用Delivery.itemsDelivery.user的延迟加载。

尝试

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

或者不要在视图中使用这些关系。