重现步骤

数据库:zhcxkj-center-warehouse
查询时间:10.9648
扫描行数:428376
发送行数:3803.57
指纹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 , ? ) ) product_num , b . lock_num - IFNULL ( b . pending_move_number , ? ) - b . put_in_num - IFNULL ( f . sumNumber , ? ) + IFNULL ( g . sumShelfNumber , ? ) lock_num , d . order_source_type , a . amazon_shipment_id , IFNULL ( e . order_build_type , ? ) order_build_type , IFNULL ( e . is_sta_com_order , ? ) is_sta_com_order , IFNULL ( e . interface_type , ? ) interface_type , ? as taskType , b . lock_num as orderLockNum , CASE WHEN IFNULL ( e . transfer_type , ? ) = ? THEN IFNULL ( f . transfer_type , ? ) ELSE IFNULL ( e . transfer_type , ? ) end as transferType , d . order_source_country , ? as taskStatus , b . lock_num AS lock_num2 , IFNULL ( b . pending_move_number , ? ) pending_move_number , IFNULL ( b . put_in_num , ? ) put_in_num , IFNULL ( f . sumNumber , ? ) sumNumber , IFNULL ( g . sumShelfNumber , ? ) sumShelfNumber FROM ? 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 . order_code , b . order_list_id , SUM ( case when a . task_status < ? then b . sku_number else ? end ) as sumNumber FROM ? 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 in ( ? , ? ) GROUP BY a . customer_id , a . order_code , b . order_list_id ) f on f . order_code = a . order_code and f . order_list_id = b . id AND f . customer_id = a . customer_id LEFT JOIN ( SELECT a . customer_id , b . order_list_id , SUM ( IFNULL ( b . moved_number , ? ) ) sumShelfNumber FROM ? a join t_stk_moving_task_detail b on a . id = b . moving_task_id AND a . customer_id = b . customer_id where a . task_type = ? GROUP by a . customer_id , b . order_list_id ) g on g
真实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.lock_num -IFNULL(b.pending_move_number,0)-b.put_in_num-IFNULL(f.sumNumber,0)+IFNULL(g.sumShelfNumber,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, 1 as taskType,b.lock_num as orderLockNum, CASE WHEN IFNULL(e.transfer_type,-1)=-1 THEN IFNULL(f.transfer_type,-1) ELSE IFNULL(e.transfer_type,-1) end as transferType, d.order_source_country, 0 as taskStatus, b.lock_num AS lock_num2, IFNULL(b.pending_move_number,0) pending_move_number, IFNULL(b.put_in_num,0) put_in_num, IFNULL(f.sumNumber,0) sumNumber, IFNULL(g.sumShelfNumber,0) sumShelfNumber 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.order_code,b.order_list_id, SUM(case when a.task_status < 4 then b.sku_number else 0 end) as 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 in(1,2) GROUP BY a.customer_id,a.order_code,b.order_list_id )f on f.order_code=a.order_code and f.order_list_id=b.id AND f.customer_id=a.customer_id LEFT JOIN ( SELECT a.customer_id,b.order_list_id,SUM(IFNULL(b.moved_number,0)) sumShelfNumber FROM t_stk_moving_task a join t_stk_moving_task_detail b on a.id=b.moving_task_id AND a.customer_id=b.customer_id where a.task_type=3 GROUP by a.customer_id,b.order_list_id )g on g.order_list_id=b.id AND g.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 Left join t_stk_transport f on a.transport_id=f.Id left join ( SELECT w.order_code,w.customer_id,COUNT(w.id) waitMovingOrderCount from rb_waitingmoving_orderdetail w WHERE IFNULL(w.waiting_move_state,0)=0 GROUP BY w.order_code,w.customer_id )k ON k.order_code=a.order_code AND a.customer_id=k.customer_id left join t_stk_stockcheck_sku tsssku on a.customer_id=tsssku.customer_id and a.warehouse_id=tsssku.warehouse_id and b.sku=tsssku.sku and tsssku.is_check=1 WHERE a.add_time >= DATE_ADD(CURRENT_TIMESTAMP,INTERVAL -12 MONTH) AND a.order_state IN (0,1) AND a.order_status=0 AND a.is_stock_order = 1 AND b.purchase_type < 2 AND b.lock_num > 0 AND IFNULL(f.sumNumber,0)>=0 AND IFNULL(k.waitMovingOrderCount,0)=0 AND IFNULL(b.pending_move_number,0)>=IFNULL(g.sumShelfNumber,0) AND (b.product_num + IFNULL(b.product_num_update,0))>0 AND b.lock_num -IFNULL(b.pending_move_number,0)-IFNULL(f.sumNumber,0)-b.put_in_num+IFNULL(g.sumShelfNumber,0) > 0 AND tsssku.id IS NULL ORDER BY a.add_time;
王凯,人工修改过
AISQL修改建议:勿使用多层嵌套和过多连表,请拆分业务
explain表:
额外建议:
索引建议:

历史记录  
  1. 2025-09-09 10:53:05, 由 周杰 创建。
  2. 2025-09-09 18:19:10, 由 程伟 指派给 唐飞飞。
    修改了 指派给,旧值为 "chengwei",新值为 "tangfeifei"。
  3. 2025-09-09 19:52:28, 由 唐飞飞 指派给 李健兴。
    修改了 指派给,旧值为 "tangfeifei",新值为 "lijianxing"。

    存储移订单移库任务生成业务拆分:

    1、获取订单数据,限制条件:

        1.1、添加时间在12个月之内

        1.2、备库订单

         1.3、订单状态为正常且订单发货状态为未发货或部分发货

         1.4、订单产品锁定数大于0

         1.5、订单产品锁定数-订单产品待移库数量-已上架数量>0

         1.6、订单不存在

    2、根据1的单据查询出已生成移库任务(存储移订单)的需求数,sumProductNum,根据订单号+orderListID分组

    3、根据1的单据查询已移出的数量(订单移存储),sumShelfNum,根据订单+OrderList分组

    4、判断1的单据是否存在移库队列(未生成移库任务),1的订单作为中转单,根据订单分组

    5、过滤掉订单产品锁定数-订单产品待移库数量-sumProductNum-订单产品已上架数量+sumShelfNum小于的数据

    6、过滤掉满足4的订单


    明天转个需求处理一下,工时:5H


  4. 2025-09-09 19:57:29, 由 李健兴 转为 需求,编号为 #30992 技术研发中心-慢SQL审批提交工单 。
  5. 2025-09-09 19:57:29, 由 李健兴 关闭。
  6. 2025-09-09 21:31:16, 由 周杰 编辑。
    修改了 所属模块 ,旧值为 "0",新值为 "1932"。
    修改了 业务部门 ,旧值为 "0",新值为 "2"。
    修改了 开发责任人,旧值为 "",新值为 "lijianxing"。
    修改了 测试责任人,旧值为 "",新值为 "admin"。
    修改了 解决时效 ,旧值为 "0",新值为 "9.07"。
    修改了 解决版本 ,旧值为 "",新值为 "pro627"。
    修改了 解决方案 ,旧值为 "tostory",新值为 "bypuduct"。
    修改了 是否确认 ,旧值为 "0",新值为 "1"。
    修改了 重现步骤 ,区别为:
    001-
    001+ 数据库:zhcxkj-center-warehouse 查询时间:10.9648 扫描行数:428376 发送行数:3803.57 指纹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 , ? ) ) product_num , b . lock_num - IFNULL ( b . pending_move_number , ? ) - b . put_in_num - IFNULL ( f . sumNumber , ? ) + IFNULL ( g . sumShelfNumber , ? ) lock_num , d . order_source_type , a . amazon_shipment_id , IFNULL ( e . order_build_type , ? ) order_build_type , IFNULL ( e . is_sta_com_order , ? ) is_sta_com_order , IFNULL ( e . interface_type , ? ) interface_type , ? as taskType , b . lock_num as orderLockNum , CASE WHEN IFNULL ( e . transfer_type , ? ) = ? THEN IFNULL ( f . transfer_type , ? ) ELSE IFNULL ( e . transfer_type , ? ) end as transferType , d . order_source_country , ? as taskStatus , b . lock_num AS lock_num2 , IFNULL ( b . pending_move_number , ? ) pending_move_number , IFNULL ( b . put_in_num , ? ) put_in_num , IFNULL ( f . sumNumber , ? ) sumNumber , IFNULL ( g . sumShelfNumber , ? ) sumShelfNumber FROM ? 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 . order_code , b . order_list_id , SUM ( case when a . task_status &lt; ? then b . sku_number else ? end ) as sumNumber FROM ? 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 in ( ? , ? ) GROUP BY a . customer_id , a . order_code , b . order_list_id ) f on f . order_code = a . order_code and f . order_list_id = b . id AND f . customer_id = a . customer_id LEFT JOIN ( SELECT a . customer_id , b . order_list_id , SUM ( IFNULL ( b . moved_number , ? ) ) sumShelfNumber FROM ? a join t_stk_moving_task_detail b on a . id = b . moving_task_id AND a . customer_id = b . customer_id where a . task_type = ? GROUP by a . customer_id , b . order_list_id ) g on g 真实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.lock_num -IFNULL(b.pending_move_number,0)-b.put_in_num-IFNULL(f.sumNumber,0)+IFNULL(g.sumShelfNumber,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, 1 as taskType,b.lock_num as orderLockNum, CASE WHEN IFNULL(e.transfer_type,-1)=-1 THEN IFNULL(f.transfer_type,-1) ELSE IFNULL(e.transfer_type,-1) end as transferType, d.order_source_country, 0 as taskStatus, b.lock_num AS lock_num2, IFNULL(b.pending_move_number,0) pending_move_number, IFNULL(b.put_in_num,0) put_in_num, IFNULL(f.sumNumber,0) sumNumber, IFNULL(g.sumShelfNumber,0) sumShelfNumber 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.order_code,b.order_list_id, SUM(case when a.task_status &lt; 4 then b.sku_number else 0 end) as 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 in(1,2) GROUP BY a.customer_id,a.order_code,b.order_list_id )f on f.order_code=a.order_code and f.order_list_id=b.id AND f.customer_id=a.customer_id LEFT JOIN ( SELECT a.customer_id,b.order_list_id,SUM(IFNULL(b.moved_number,0)) sumShelfNumber FROM t_stk_moving_task a join t_stk_moving_task_detail b on a.id=b.moving_task_id AND a.customer_id=b.customer_id where a.task_type=3 GROUP by a.customer_id,b.order_list_id )g on g.order_list_id=b.id AND g.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 Left join t_stk_transport f on a.transport_id=f.Id left join ( SELECT w.order_code,w.customer_id,COUNT(w.id) waitMovingOrderCount from rb_waitingmoving_orderdetail w WHERE IFNULL(w.waiting_move_state,0)=0 GROUP BY w.order_code,w.customer_id )k ON k.order_code=a.order_code AND a.customer_id=k.customer_id left join t_stk_stockcheck_sku tsssku on a.customer_id=tsssku.customer_id and a.warehouse_id=tsssku.warehouse_id and b.sku=tsssku.sku and tsssku.is_check=1 WHERE a.add_time &gt;= DATE_ADD(CURRENT_TIMESTAMP,INTERVAL -12 MONTH) AND a.order_state IN (0,1) AND a.order_status=0 AND a.is_stock_order = 1 AND b.purchase_type &lt; 2 AND b.lock_num &gt; 0 AND IFNULL(f.sumNumber,0)&gt;=0 AND IFNULL(k.waitMovingOrderCount,0)=0 AND IFNULL(b.pending_move_number,0)&gt;=IFNULL(g.sumShelfNumber,0) AND (b.product_num + IFNULL(b.product_num_update,0))&gt;0 AND b.lock_num -IFNULL(b.pending_move_number,0)-IFNULL(f.sumNumber,0)-b.put_in_num+IFNULL(g.sumShelfNumber,0) &gt; 0 AND tsssku.id IS NULL ORDER BY a.add_time; 王凯,人工修改过 AISQL修改建议:勿使用多层嵌套和过多连表,请拆分业务 explain表: 额外建议: 索引建议:
    002- 数据库:zhcxkj-center-warehouse
    003- 查询时间:10.9648
    004- 扫描行数:428376
    005- 发送行数:3803.57
    006- 指纹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 , ? ) ) product_num , b . lock_num - IFNULL ( b . pending_move_number , ? ) - b . put_in_num - IFNULL ( f . sumNumber , ? ) + IFNULL ( g . sumShelfNumber , ? ) lock_num , d . order_source_type , a . amazon_shipment_id , IFNULL ( e . order_build_type , ? ) order_build_type , IFNULL ( e . is_sta_com_order , ? ) is_sta_com_order , IFNULL ( e . interface_type , ? ) interface_type , ? as taskType , b . lock_num as orderLockNum , CASE WHEN IFNULL ( e . transfer_type , ? ) = ? THEN IFNULL ( f . transfer_type , ? ) ELSE IFNULL ( e . transfer_type , ? ) end as transferType , d . order_source_country , ? as taskStatus , b . lock_num AS lock_num2 , IFNULL ( b . pending_move_number , ? ) pending_move_number , IFNULL ( b . put_in_num , ? ) put_in_num , IFNULL ( f . sumNumber , ? ) sumNumber , IFNULL ( g . sumShelfNumber , ? ) sumShelfNumber FROM ? 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 . order_code , b . order_list_id , SUM ( case when a . task_status &lt; ? then b . sku_number else ? end ) as sumNumber FROM ? 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 in ( ? , ? ) GROUP BY a . customer_id , a . order_code , b . order_list_id ) f on f . order_code = a . order_code and f . order_list_id = b . id AND f . customer_id = a . customer_id LEFT JOIN ( SELECT a . customer_id , b . order_list_id , SUM ( IFNULL ( b . moved_number , ? ) ) sumShelfNumber FROM ? a join t_stk_moving_task_detail b on a . id = b . moving_task_id AND a . customer_id = b . customer_id where a . task_type = ? GROUP by a . customer_id , b . order_list_id ) g on g
    007- 真实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.lock_num -IFNULL(b.pending_move_number,0)-b.put_in_num-IFNULL(f.sumNumber,0)+IFNULL(g.sumShelfNumber,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, 1 as taskType,b.lock_num as orderLockNum, CASE WHEN IFNULL(e.transfer_type,-1)=-1 THEN IFNULL(f.transfer_type,-1) ELSE IFNULL(e.transfer_type,-1) end as transferType, d.order_source_country, 0 as taskStatus, b.lock_num AS lock_num2, IFNULL(b.pending_move_number,0) pending_move_number, IFNULL(b.put_in_num,0) put_in_num, IFNULL(f.sumNumber,0) sumNumber, IFNULL(g.sumShelfNumber,0) sumShelfNumber 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.order_code,b.order_list_id, SUM(case when a.task_status &lt; 4 then b.sku_number else 0 end) as 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 in(1,2) GROUP BY a.customer_id,a.order_code,b.order_list_id )f on f.order_code=a.order_code and f.order_list_id=b.id AND f.customer_id=a.customer_id LEFT JOIN ( SELECT a.customer_id,b.order_list_id,SUM(IFNULL(b.moved_number,0)) sumShelfNumber FROM t_stk_moving_task a join t_stk_moving_task_detail b on a.id=b.moving_task_id AND a.customer_id=b.customer_id where a.task_type=3 GROUP by a.customer_id,b.order_list_id )g on g.order_list_id=b.id AND g.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 Left join t_stk_transport f on a.transport_id=f.Id left join ( SELECT w.order_code,w.customer_id,COUNT(w.id) waitMovingOrderCount from rb_waitingmoving_orderdetail w WHERE IFNULL(w.waiting_move_state,0)=0 GROUP BY w.order_code,w.customer_id )k ON k.order_code=a.order_code AND a.customer_id=k.customer_id left join t_stk_stockcheck_sku tsssku on a.customer_id=tsssku.customer_id and a.warehouse_id=tsssku.warehouse_id and b.sku=tsssku.sku and tsssku.is_check=1 WHERE a.add_time &gt;= DATE_ADD(CURRENT_TIMESTAMP,INTERVAL -12 MONTH) AND a.order_state IN (0,1) AND a.order_status=0 AND a.is_stock_order = 1 AND b.purchase_type &lt; 2 AND b.lock_num &gt; 0 AND IFNULL(f.sumNumber,0)&gt;=0 AND IFNULL(k.waitMovingOrderCount,0)=0 AND IFNULL(b.pending_move_number,0)&gt;=IFNULL(g.sumShelfNumber,0) AND (b.product_num + IFNULL(b.product_num_update,0))&gt;0 AND b.lock_num -IFNULL(b.pending_move_number,0)-IFNULL(f.sumNumber,0)-b.put_in_num+IFNULL(g.sumShelfNumber,0) &gt; 0 AND tsssku.id IS NULL ORDER BY a.add_time;
    008- 王凯,人工修改过
    009- AISQL修改建议:勿使用多层嵌套和过多连表,请拆分业务
    010- explain表:
    011- 额外建议:
    012- 索引建议:
    013-
    001- <br />
    001+ <br /> 数据库:zhcxkj-center-warehouse<br /> 查询时间:10.9648<br /> 扫描行数:428376<br /> 发送行数:3803.57<br /> 指纹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 , ? ) ) product_num , b . lock_num - IFNULL ( b . pending_move_number , ? ) - b . put_in_num - IFNULL ( f . sumNumber , ? ) + IFNULL ( g . sumShelfNumber , ? ) lock_num , d . order_source_type , a . amazon_shipment_id , IFNULL ( e . order_build_type , ? ) order_build_type , IFNULL ( e . is_sta_com_order , ? ) is_sta_com_order , IFNULL ( e . interface_type , ? ) interface_type , ? as taskType , b . lock_num as orderLockNum , CASE WHEN IFNULL ( e . transfer_type , ? ) = ? THEN IFNULL ( f . transfer_type , ? ) ELSE IFNULL ( e . transfer_type , ? ) end as transferType , d . order_source_country , ? as taskStatus , b . lock_num AS lock_num2 , IFNULL ( b . pending_move_number , ? ) pending_move_number , IFNULL ( b . put_in_num , ? ) put_in_num , IFNULL ( f . sumNumber , ? ) sumNumber , IFNULL ( g . sumShelfNumber , ? ) sumShelfNumber FROM ? 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 . order_code , b . order_list_id , SUM ( case when a . task_status &lt; ? then b . sku_number else ? end ) as sumNumber FROM ? 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 in ( ? , ? ) GROUP BY a . customer_id , a . order_code , b . order_list_id ) f on f . order_code = a . order_code and f . order_list_id = b . id AND f . customer_id = a . customer_id LEFT JOIN ( SELECT a . customer_id , b . order_list_id , SUM ( IFNULL ( b . moved_number , ? ) ) sumShelfNumber FROM ? a join t_stk_moving_task_detail b on a . id = b . moving_task_id AND a . customer_id = b . customer_id where a . task_type = ? GROUP by a . customer_id , b . order_list_id ) g on g <br /> 真实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.lock_num -IFNULL(b.pending_move_number,0)-b.put_in_num-IFNULL(f.sumNumber,0)+IFNULL(g.sumShelfNumber,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, 1 as taskType,b.lock_num as orderLockNum, CASE WHEN IFNULL(e.transfer_type,-1)=-1 THEN IFNULL(f.transfer_type,-1) ELSE IFNULL(e.transfer_type,-1) end as transferType, d.order_source_country, 0 as taskStatus, b.lock_num AS lock_num2, IFNULL(b.pending_move_number,0) pending_move_number, IFNULL(b.put_in_num,0) put_in_num, IFNULL(f.sumNumber,0) sumNumber, IFNULL(g.sumShelfNumber,0) sumShelfNumber 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.order_code,b.order_list_id, SUM(case when a.task_status &lt; 4 then b.sku_number else 0 end) as 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 in(1,2) GROUP BY a.customer_id,a.order_code,b.order_list_id )f on f.order_code=a.order_code and f.order_list_id=b.id AND f.customer_id=a.customer_id LEFT JOIN ( SELECT a.customer_id,b.order_list_id,SUM(IFNULL(b.moved_number,0)) sumShelfNumber FROM t_stk_moving_task a join t_stk_moving_task_detail b on a.id=b.moving_task_id AND a.customer_id=b.customer_id where a.task_type=3 GROUP by a.customer_id,b.order_list_id )g on g.order_list_id=b.id AND g.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 Left join t_stk_transport f on a.transport_id=f.Id left join ( SELECT w.order_code,w.customer_id,COUNT(w.id) waitMovingOrderCount from rb_waitingmoving_orderdetail w WHERE IFNULL(w.waiting_move_state,0)=0 GROUP BY w.order_code,w.customer_id )k ON k.order_code=a.order_code AND a.customer_id=k.customer_id left join t_stk_stockcheck_sku tsssku on a.customer_id=tsssku.customer_id and a.warehouse_id=tsssku.warehouse_id and b.sku=tsssku.sku and tsssku.is_check=1 WHERE a.add_time &gt;= DATE_ADD(CURRENT_TIMESTAMP,INTERVAL -12 MONTH) AND a.order_state IN (0,1) AND a.order_status=0 AND a.is_stock_order = 1 AND b.purchase_type &lt; 2 AND b.lock_num &gt; 0 AND IFNULL(f.sumNumber,0)&gt;=0 AND IFNULL(k.waitMovingOrderCount,0)=0 AND IFNULL(b.pending_move_number,0)&gt;=IFNULL(g.sumShelfNumber,0) AND (b.product_num + IFNULL(b.product_num_update,0))&gt;0 AND b.lock_num -IFNULL(b.pending_move_number,0)-IFNULL(f.sumNumber,0)-b.put_in_num+IFNULL(g.sumShelfNumber,0) &gt; 0 AND tsssku.id IS NULL ORDER BY a.add_time;<br /> 王凯,人工修改过<br /> AISQL修改建议:勿使用多层嵌套和过多连表,请拆分业务<br /> explain表:<br /> 额外建议:<br /> 索引建议:<br /><br />
    002- 数据库:zhcxkj-center-warehouse<br />
    003- 查询时间:10.9648<br />
    004- 扫描行数:428376<br />
    005- 发送行数:3803.57<br />
    006- 指纹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 , ? ) ) product_num , b . lock_num - IFNULL ( b . pending_move_number , ? ) - b . put_in_num - IFNULL ( f . sumNumber , ? ) + IFNULL ( g . sumShelfNumber , ? ) lock_num , d . order_source_type , a . amazon_shipment_id , IFNULL ( e . order_build_type , ? ) order_build_type , IFNULL ( e . is_sta_com_order , ? ) is_sta_com_order , IFNULL ( e . interface_type , ? ) interface_type , ? as taskType , b . lock_num as orderLockNum , CASE WHEN IFNULL ( e . transfer_type , ? ) = ? THEN IFNULL ( f . transfer_type , ? ) ELSE IFNULL ( e . transfer_type , ? ) end as transferType , d . order_source_country , ? as taskStatus , b . lock_num AS lock_num2 , IFNULL ( b . pending_move_number , ? ) pending_move_number , IFNULL ( b . put_in_num , ? ) put_in_num , IFNULL ( f . sumNumber , ? ) sumNumber , IFNULL ( g . sumShelfNumber , ? ) sumShelfNumber FROM ? 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 . order_code , b . order_list_id , SUM ( case when a . task_status &lt; ? then b . sku_number else ? end ) as sumNumber FROM ? 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 in ( ? , ? ) GROUP BY a . customer_id , a . order_code , b . order_list_id ) f on f . order_code = a . order_code and f . order_list_id = b . id AND f . customer_id = a . customer_id LEFT JOIN ( SELECT a . customer_id , b . order_list_id , SUM ( IFNULL ( b . moved_number , ? ) ) sumShelfNumber FROM ? a join t_stk_moving_task_detail b on a . id = b . moving_task_id AND a . customer_id = b . customer_id where a . task_type = ? GROUP by a . customer_id , b . order_list_id ) g on g <br />
    007- 真实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.lock_num -IFNULL(b.pending_move_number,0)-b.put_in_num-IFNULL(f.sumNumber,0)+IFNULL(g.sumShelfNumber,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, 1 as taskType,b.lock_num as orderLockNum, CASE WHEN IFNULL(e.transfer_type,-1)=-1 THEN IFNULL(f.transfer_type,-1) ELSE IFNULL(e.transfer_type,-1) end as transferType, d.order_source_country, 0 as taskStatus, b.lock_num AS lock_num2, IFNULL(b.pending_move_number,0) pending_move_number, IFNULL(b.put_in_num,0) put_in_num, IFNULL(f.sumNumber,0) sumNumber, IFNULL(g.sumShelfNumber,0) sumShelfNumber 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.order_code,b.order_list_id, SUM(case when a.task_status &lt; 4 then b.sku_number else 0 end) as 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 in(1,2) GROUP BY a.customer_id,a.order_code,b.order_list_id )f on f.order_code=a.order_code and f.order_list_id=b.id AND f.customer_id=a.customer_id LEFT JOIN ( SELECT a.customer_id,b.order_list_id,SUM(IFNULL(b.moved_number,0)) sumShelfNumber FROM t_stk_moving_task a join t_stk_moving_task_detail b on a.id=b.moving_task_id AND a.customer_id=b.customer_id where a.task_type=3 GROUP by a.customer_id,b.order_list_id )g on g.order_list_id=b.id AND g.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 Left join t_stk_transport f on a.transport_id=f.Id left join ( SELECT w.order_code,w.customer_id,COUNT(w.id) waitMovingOrderCount from rb_waitingmoving_orderdetail w WHERE IFNULL(w.waiting_move_state,0)=0 GROUP BY w.order_code,w.customer_id )k ON k.order_code=a.order_code AND a.customer_id=k.customer_id left join t_stk_stockcheck_sku tsssku on a.customer_id=tsssku.customer_id and a.warehouse_id=tsssku.warehouse_id and b.sku=tsssku.sku and tsssku.is_check=1 WHERE a.add_time &gt;= DATE_ADD(CURRENT_TIMESTAMP,INTERVAL -12 MONTH) AND a.order_state IN (0,1) AND a.order_status=0 AND a.is_stock_order = 1 AND b.purchase_type &lt; 2 AND b.lock_num &gt; 0 AND IFNULL(f.sumNumber,0)&gt;=0 AND IFNULL(k.waitMovingOrderCount,0)=0 AND IFNULL(b.pending_move_number,0)&gt;=IFNULL(g.sumShelfNumber,0) AND (b.product_num + IFNULL(b.product_num_update,0))&gt;0 AND b.lock_num -IFNULL(b.pending_move_number,0)-IFNULL(f.sumNumber,0)-b.put_in_num+IFNULL(g.sumShelfNumber,0) &gt; 0 AND tsssku.id IS NULL ORDER BY a.add_time;<br />
    008- 王凯,人工修改过<br />
    009- AISQL修改建议:勿使用多层嵌套和过多连表,请拆分业务<br />
    010- explain表:<br />
    011- 额外建议:<br />
    012- 索引建议:<br />
    013- <br />
  7. 2025-09-12 15:30:58, 由 陈莉珍 编辑。
    修改了 测试责任人,旧值为 "admin",新值为 "lijianxing"。
所属项目 技术中心-需求池
所属模块 供应链   仓储物流   仓储
所属计划
所属迭代
Bug类型
严重程度 一般
优先级 P2
Bug状态 已关闭
业务部门 总经办
影响功能
开发责任人 李健兴
测试责任人 李健兴
解决时效 9.07
激活次数 0
激活日期
是否确认 是
当前指派 Closed 于 2025-09-12 15:30:58
截止日期 0000-00-00
上线时间 2025-09-09 19:50:00
上线时效 8.95
操作系统
浏览器
关键词
抄送给
所属迭代
相关需求
相关任务
由谁创建 周杰 于 2025-09-09 10:53:05
影响环境 生产环境-业务反馈
由谁解决 李健兴 于 2025-09-09 19:57:29
解决版本 生产环境-业务反馈
解决方案 产品需求缺陷
由谁关闭 李健兴 于 2025-09-09 19:57:29
最后修改 陈莉珍 于 2025-09-12 15:30:58