业务需求
需求描述
严重级别:严重
所属项目:java产品库(可能多平台那边的)
问题原因:慢SQL、大表JOIN,查询时间50秒左右,SQL为:(
SELECT p.id,p.sku,p.productGroupSku,qlength,qwidth,qheight,p.isGroup FROM ( SELECT rp.id, rp.sku AS sku, rp.product_group_sku AS productGroupSku,rp.is_group as isGroup, CASE WHEN rp.pack_length >0 AND rp.pack_width >0 AND rp.pack_height >0 THEN rp.pack_length ELSE rp.length END AS qlength, CASE WHEN rp.pack_length >0 AND rp.pack_width >0 AND rp.pack_height >0 THEN rp.pack_width ELSE rp.width END AS qwidth, CASE WHEN rp.pack_length >0 AND rp.pack_width >0 AND rp.pack_height >0 THEN rp.pack_height ELSE rp.height END AS qheight, CASE WHEN rp.pack_weight > 0 THEN rp.pack_weight ELSE rp.gross_weight END AS weight FROM rb_product_admin rpa INNER JOIN rb_product rp ON rpa.customer_id = rp.customer_id AND rpa.sku = rp.sku AND rp.delete_status=0 AND rpa.check_status = 1 WHERE rp.customer_id = 1 AND rp.id > 2215312 AND rpa.check_time >= '1995-07-10 12:50:21.019' AND rpa.check_time <= '2025-07-10 12:50:21.019' AND rp.product_state IN ( 0 , 1 ) AND rp.has_law_firm_agent IN ( -1 , 0 , 1 ) and rp.product_property in ( 2 ) and rp.is_group in ( 0 ) ) p ORDER BY id asc LIMIT 1000;
)
解决方案:(建议方案)当前查询,建议以rb_product表的ID为区间MQ事件{"min_id":1,"max_id":500},消费者单表回查rb_product,再通过rb_product_admin判断是否符合条件
验收标准
价值描述
降低风险
降低因为慢 SQL,导致的系统稳定性变差的问题,同时加快系统响应速度,提升用户体验
价值量估算:若不处理该慢 SQL,预估造成的影响 2W RMB/月
满意度:非常满意
价值验收:完全达成
原因备注:无