如何优化这样的查询

pcrecxhr  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(255)

我当前的查询如下所示:

SELECT a.id,b.size,c.item_no,d.size_id 
FROM inv a LEFT JOIN product b ON a.id=b.id 
LEFT JOIN all_products c ON a.id=c.id and a.size=c.size 
LEFT JOIN 
  (SELECT qty, code, code2,status FROM prod_stock where status='1')    
  AS d ON c.web_code=d.code 
LEFT JOIN prod_size e ON a.size_id=e.prod_size_id 
WHERE a.id='123456' ORDER BY a.id,e.prod_size_id;;

随着表的增长(所有的产品都有超过70000项),上面的查询需要2~7秒。有什么建议吗?我的当前设置是灯。。

v6ylcynt

v6ylcynt1#

首先删除子查询和最后一个 JOIN (似乎没有必要):

SELECT i.id, p.size, ap.item_no, ps.size_id 
FROM inv i LEFT JOIN
     product p
     ON i.id = p.id LEFT JOIN
     all_products ap
     ON i.id = ap.id and i.size = ap.size LEFT JOIN 
     prod_stock ps
     ON ap.web_code = ps.code AND status = 1 
WHERE i.id = 123456
ORDER BY i.id, i.size_id;

我删除了常量上的引号。据推测,它们实际上是数字(如果它们是字符串,那么把常量加回去)。
你想在所有的 JOIN 钥匙。对于第一张table,你特别想要 inv(id, size, size_id) .

相关问题