反馈人:王凯
zhcxkj-center-warehouse 慢sql,请勿过多联表 和多层嵌套 ,业务拆分分步、分批处理数据,从代码中进行数据拼接、组装 : SELECT
b.order_code,a.warehouse_id,
b.id AS order_list_id,
b.sku,
b.customer_id,
(b.product_num + IFNULL(b.product_num_update,0)) product_num,
b.pending_move_number- IFNULL(f.sumNumber, 0) lock_num,
d.order_source_type,
a.amazon_shipment_id,
IFNULL(e.order_build_type, -1) order_build_type,
IFNULL(e.is_sta_com_order, 0) is_sta_com_order,
IFNULL(e.interface_type, 0) interface_type,
3 as task_type,
0 as taskStatus,
b.pending_move_number,
IFNULL(f.sumNumber, 0) sumNumber
FROM t_stk_order_info a
JOIN t_stk_order_list b ON a.order_code = b.order_code AND a.customer_id = b.customer_id
JOIN rb_order_source d ON a.order_source_id = d.id AND a.customer_id = d.customer_id
LEFT JOIN (
SELECT a.customer_id,a.origin_order_code,b.order_list_id,
SUM(CASE WHEN a.task_status < 4 then b.sku_number else IFNULL(b.moved_number,0)+IFNULL(b.abnormal_number,0)end) sumNumber
from t_stk_moving_task a
join t_stk_moving_task_detail b on b.moving_task_id=a.id and b.customer_id=a.customer_id
WHERE task_type=3 AND task_status < 5
GROUP BY a.customer_id,a.origin_order_code,b.order_list_id
)f on f.origin_order_code=a.order_code and f.order_list_id=b.id AND f.customer_id=a.customer_id
LEFT JOIN t_stk_order_info_beikuexpand e ON a.order_code = e.order_code AND a.customer_id = e.customer_id
WHERE a.add_time >= 2025-01-08 15:15:00.097
AND a.is_stock_order = 1
and b.pending_move_number>0
AND b.pending_move_number- IFNULL(f.sumNumber, 0) > 0
bug问题:
可生成订单移存储移库任务的查询sql查询耗时长
bug分析
这个问题从sql角度已经无法再优化了,需要拆分业务
bug解决方案:
1、分页查询指定范围内的单据数据
2、根据第一步查询出的订单,分批查询订单已生成的移库任务
3、根据1和2查出的数据解析出可生成订单移存储移库任务的数据