gpt4 book ai didi

MySQL 使用 sum 加速子查询

转载 作者:太空宇宙 更新时间:2023-11-03 10:38:05 26 4
gpt4 key购买 nike

我需要一个查询来了解实际库存(每个唯一产品 ID 只有一行)以及所有销售和采购订单。现在,我们使用两个子查询(销售订单和采购订单),因为可能有多个销售订单和采购订单。由于有两个子查询,这个查询非常慢。是否有另一种方法来获取销售订单的总和和采购订单的总和,例如使用常规的左连接?

当前查询

SELECT stock.quanity, salesOrders.quantity, purchaseOrders.quantity
FROM stock
LEFT JOIN (
SELECT product_id, sum(quantity) as quantity
FROM sales_orders
GROUP BY product_id
) salesOrders ON stock.product_id=salesOrders.product_id
LEFT JOIN (
SELECT product_id, sum(quantity) as quantity
FROM purcahse_orders
GROUP BY product_id
) purchaseOrders ON stock.product_id=purchaseOrders.product_id

最佳答案

使用正确的索引,相关子查询可能会更快:

SELECT s.quantity, 
(SELECT sum(so.quantity) FROM sales_orders so WHERE s.product_id = so.product_id
) as sales_quantity ,
(SELECT sum(po.quantity) FROM purchase_orders po WHERE s.product_id = po.product_id
) as purchase_quantity
FROM stock s ;

为了提高性能,您需要在 sales_orders(product_id, quantity)purchase_orders(product_id, quantity) 上建立索引。

关于MySQL 使用 sum 加速子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43875213/

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