gpt4 book ai didi

mysql - 查询运行时间较长

转载 作者:行者123 更新时间:2023-11-29 12:14:43 25 4
gpt4 key购买 nike

我创建了一个查询来获取非销售产品。这里我们有两个主表,一个是产品表,第二个是 order_product 表。为了获取非销售产品,我想从 order_product 表中不存在的产品表中获取这些产品。这个查询在本地主机上运行良好,但是当我在主服务器上执行此查询时,它需要更长的时间,并且由于发生超时。我怎样才能提高这个查询的速度或优化我的查询。

  SELECT p.date_added, p.model, p.status, p.quantity, ptc.category_id, pd.name AS product_name, cd.name AS category_name FROM (`product` p INNER JOIN `product_description` pd ON p.product_id= pd.product_id) INNER JOIN (`product_to_category` ptc INNER JOIN `category_description` cd ON ptc.category_id = cd.category_id) ON p.product_id = ptc.product_id 
WHERE p.product_id NOT IN (SELECT product_id FROM `order_product`)
ORDER BY p.quantity DESC LIMIT 1,100

最佳答案

这是查询的另一个版本,没有使用 not in

SELECT
p.date_added,
p.model,
p.status,
p.quantity,
ptc.category_id,
pd.name AS product_name,
cd.name AS category_name
FROM `product` p
INNER JOIN `product_description` pd ON p.product_id= pd.product_id
INNER JOIN `product_to_category` ptc ON p.product_id = ptc.product_id
INNER JOIN `category_description` cd ON ptc.category_id = cd.category_id
left join `order_product` op on op.product_id = p.product_id
WHERE
op.product_id is null
ORDER BY p.quantity DESC LIMIT 1,100

您需要确保对于所有连接条件,相应的列都已建立索引,并且需要以下 2 个索引来解析 where 和 order by

alter table product add index quantity_idx(quantity);
alter table order_product add index product_id_idx(product_id);

您可以使用explain select ...来检查查询运行状况。

关于mysql - 查询运行时间较长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30024302/

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