需求 #17952
消息中心-技术逻辑优化
0%
描述
对应接口:
api/message/msessage_center_index
以下是慢SQL:
SELECT `message_id` FROM `fmys_message_center_goods` `mcg` WHERE `mcg`.`add_time` > '1590336000' AND ( `mcg`.`user_id` = 332815 OR (find_in_set(332815, mcg.user_list) and mcg.user_id = 0) ) AND `mcg`.`message_type` IN ('23','24','27') [ RunTime:0.164979s ]
SELECT `message_id`,`message_title`,`message_type`,`add_time`,`message_subtitle`,`message_description`,`message_attribute`,`other_amount` FROM `fmys_message_center_goods` `m` WHERE `m`.`message_type` IN ('23','24','27','28') AND ( `m`.`user_id` = 332815 OR (find_in_set(332815, m.user_list) and m.user_id = 0) ) AND `m`.`add_time` > '1590336000' ORDER BY `add_time` DESC LIMIT 1 [ RunTime:0.170375s ]
SELECT sum(IF( m.message_type in (3, 4, 8, 13, 14, 15, 18), 1, 0 )) AS refundNum,sum(IF( m.message_type in (12), 1, 0 )) AS platformNum,sum(IF( m.message_type in (5, 9, 10, 25, 26), 1, 0 )) AS welfareNum FROM `fmys_message_center` `m` LEFT JOIN `fmys_message_chick` `mc` ON `mc`.`message_id`=`m`.`message_id` WHERE `m`.`add_time` > '1583942400' AND `m`.`user_id` = '332815' AND ( `mc`.`message_id` is null ) LIMIT 1 [ RunTime:0.054061s ]
分析:重点是fmys_message_center_goods.user_list的查询使用了 find_in_set,需要优化业务;