gpt4 book ai didi

mysql - 如何像这样优化查询

转载 作者:行者123 更新时间:2023-11-29 02:41:54 25 4
gpt4 key购买 nike

我当前的查询如下所示:

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;;

随着表的增长(all_products 有超过 70,000 项),上述查询需要 2~7 秒。有什么建议吗?我当前的设置是 LAMP..

最佳答案

首先删除子查询和最后一个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 键上建立索引。对于第一个表,您特别需要 inv(id, size, size_id)

关于mysql - 如何像这样优化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49933795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com