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

Yii 1.1 excessive amount of queries, how to optimise?

我在使用 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 服务器 ping 时间为 23 毫秒,之前提到的页面加载时间很长。

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

尝试

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

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