记一次接口优化的经历

借用我老大的话,接口优化其实主要是提高代码质量和执行效率,无非就是从三个方面入手:1、检查代码中SQL语句,优化SQL; 2、数据库层面优化,比如加索引等; 3、检查代码逻辑,尤其是for循环、递归等;

我这次优化,是因为数据量大的情况下,接口响应速度太慢了(30s左右)。最后一番检查,找到根源是SQL语句问题,于是我就对其中一条执行时间长的SQL语句进行了优化。不想码字了,直接上代码看吧。

## 优化前
SELECT u.user_id,COUNT(g.id) isVIP 
FROM user_info u 
LEFT JOIN (SELECT id, user_id FROM gz_vip_personage WHERE is_delete = 0 AND expired_date > NOW() GROUP BY user_id ) g on g.user_id=u.user_id   
WHERE u.school_id= 430 AND u.grade_id = 1 AND u.class_name = '3班'
GROUP BY u.user_id 
HAVING isVIP = 1
ORDER BY isVIP DESC,u.user_id;

## 优化后
SELECT u1.user_id, COUNT(g.id) isVIP 
FROM
( SELECT u.user_id FROM user_info u WHERE u.school_id = 430 AND u.grade_id = 1 AND u.class_name = '3班' ) u1
 LEFT JOIN ( SELECT id, user_id FROM gz_vip_personage WHERE is_delete = 0 AND expired_date > NOW( )) g ON g.user_id = u1.user_id GROUP BY u1.user_id 
HAVING isVIP = 1
ORDER BY isVIP DESC,u1.user_id;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值