每页查询次数过多

时间:2015-08-18 20:45:13

标签: php mysql performance yii2

我使用Yii2和Yii2的标准方式从数据库中获取数据。使用JOIN还需要23个查询才能获取90行以及其他一些加载页面的内容。

但是当我开始在表格中显示数据时,它变得至关重要。每行有多张图片,我只拍一张图片。当查询数量超过100时就是这样。

这是我获取一张图片的方式:

Table1::find()->where(['IDauction'=>$ID])->limit(1)->orderBy('ID ASC')->one();

非常简单的查询,但是当我有90行并且每行执行此查询时,它会超过每页100个。我不确定如何解决这个问题,因为当我使用关系显示所有数据时查询数量超过500.例如,我也获取用户的个人资料图像,该图像位于不同的表格中。

这就是我目前的工作方式

$query = Auction::find();
$query->joinWith(['relationIDpigeon', 'relationIDuser']);
$dataProvider = new ActiveDataProvider([
    'query' => $query,
    'sort'=> ['defaultOrder' => ['start_time'=>SORT_DESC]],//newest first
    'pagination'=>
    [
        'pageSize'=>100,
    ]
]);

1 个答案:

答案 0 :(得分:1)

您的查询编写不正确。你也应该在Yii中建立关系。这样你就可以引用相关的表和行。

您的查询应如下所示

$result = Table1::model()->findAllByAttributes(array('IDauction' =>$ID),array('order'=>'ID ASC','limit'=> 1));

引用像这样的相关字段

$related_rows = $result->related_rows;