首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >优化Yii2 MYSQL查询

优化Yii2 MYSQL查询
EN

Stack Overflow用户
提问于 2018-11-02 20:45:18
回答 1查看 32关注 0票数 0

我需要优化我的code.it工作,但需要时间,有时还会超时。

目标从表%1和表%2中选择的列必须在另一个表中组合。新表中不允许重复。提亚

代码语言:javascript
复制
 $modelsc=Customers::find()->select('customer_id')->all();
 $modelsp = Product::find()->select('product_no')->all();
 foreach($modelsc as $modelc) {                                                                      
     $user = $connection->createCommand(
           'SELECT product_no as product_no,:cust_no as fkcustomer_id                                                                                                         
             FROM product AS p                                                                                                           
             WHERE NOT EXISTS( SELECT pc.fkproduct_no                                                                                                                         
             FROM                                                                                                                               
             productcustomer AS pc
             WHERE
            pc.fkproduct_no = p.Product_no AND fkcustomer_id = :cust_no)');
      $user->bindValue(':cust_no', $modelc->customer_id);
      $modelsx = $user->queryAll();    
      Yii::$app->db->createCommand()->batchInsert('productcustomer', [ 'fkproduct_no', 'fkcustomer_id'], $modelsx)->execute();                                                          }
EN

回答 1

Stack Overflow用户

发布于 2018-11-03 15:48:51

查看您的代码,您可以避免not exists子句,并尝试在pc.fkproduct_no上对null使用左连接检查

代码语言:javascript
复制
SELECT product_no as product_no,
      :cust_no as fkcustomer_id                                           
FROM product AS p   
LEFT JOIN  productcustomer AS pc ON  pc.fkproduct_no = p.Product_no 
    AND fkcustomer_id = :cust_no  
WHERE pc.fkproduct_no  is null

无论如何,请确保您对列where of join条件具有正确的索引

对于表products,列Product_no上的索引

对于表productcustomer(fkcustomer_id, fkproduct_no)上的复合索引

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53118860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档