简体   繁体   English

每页查询太多

[英]Too many queries per page

I'm using Yii2 and Yii2's standard way to fetch data from database. 我正在使用Yii2和Yii2的标准方法从数据库中获取数据。 Using also JOINs, it takes 23 queries to fetch 90 rows + some other stuff loaded with the page. 使用JOINs,需要23个查询来获取90行+其他一些加载页面的东西。

But when I start showing data in table, it becomes critical. 但是,当我开始在表格中显示数据时,它变得至关重要。 Every row has multiple pictures and I take only one picture to show. 每行有多张图片,我只拍一张图片。 That's when number of queries go above 100. 那是当查询数量超过100时。

This is how I fetch that one image: 这是我获取一个图像的方式:

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

Very simple query, but when I have 90 rows and each row execute this query it goes above 100 per page. 非常简单的查询,但是当我有90行并且每行执行此查询时,它会超过每页100个。 I'm not sure how to fix this, because when I show all data using relations number of queries go above 500. For example I fetch user's profile image also and that image is in different table. 我不知道如何解决这个问题,因为当我使用关系显示所有数据时查询数量超过500.例如,我也获取用户的个人资料图像,并且该图像位于不同的表格中。

This is how I do it currently 这就是我目前的做法

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

Your query isn't written correctly. 您的查询编写不正确。 Also you should set up your relations in Yii. 你也应该在Yii中建立关系。 That way you can reference related tables and row. 这样你就可以引用相关的表和行。

Your query should look like this 您的查询应如下所示

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

And referencing related fields like this 并引用这样的相关字段

$related_rows = $result->related_rows;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM