首页 > 社交 > 科普中国

从20s优化到500ms,我用了这三招

常驻编辑 科普中国 2022-07-02 节点   线程   批量   接口   性能   评价   组织   业务   数据   系统
Dxl拜客生活常识网

所以,还是先保持在接口中远程调用吧。Dxl拜客生活常识网

这样看来,可以优化的地方只能在:for循环中查询数据。Dxl拜客生活常识网

3. 第一次优化

由于需要在for循环中,每条记录都要根据不同的条件,查询出想要的数据。Dxl拜客生活常识网

由于业务系统调用这个接口时,没有传id ,不好在where 条件中用id in (...),这方式批量查询数据。Dxl拜客生活常识网

其实,有一种办法不用循环查询,一条sql就能搞定需求:使用or 关键字拼接,例如:(org_code='001' and category_id=123 and business_id=111 and business_type=1) or (org_code='002' and category_id=123 and business_id=112 and business_type=2) or (org_code='003' and category_id=124 and business_id=117 and business_type=1)...Dxl拜客生活常识网

这种方式会导致sql语句会非常长,性能也会很差。Dxl拜客生活常识网

其实还有一种写法:Dxl拜客生活常识网

where (a,b) in ((1,2),(1,3)...)

不过这种sql,如果一次性查询的数据量太多的话,性能也不太好。Dxl拜客生活常识网

居然没法改成批量查询,就只能优化单条查询sql的执行效率了。Dxl拜客生活常识网

首先从索引入手,因为改造成本最低。Dxl拜客生活常识网

第一次优化是优化索引。Dxl拜客生活常识网

评价表之前建立一个business_id字段的普通索引,但是从目前来看效率不太理想。Dxl拜客生活常识网

由于我们果断加了联合索引:Dxl拜客生活常识网

alter table user_score add index  `un_org_category_business` (`org_code`,`category_id`,`business_id`,`business_type`) USING BTREE;

该联合索引由:org_code、category_id、business_id和business_type四个字段组成。Dxl拜客生活常识网

经过这次优化,效果立竿见影。Dxl拜客生活常识网

批量评价查询接口最大耗时,从最初的20s ,缩短到了5s左右。Dxl拜客生活常识网

4. 第二次优化

相关阅读:

  • ssr链接怎么用(安卓手机ssr怎么添加节点)
  • ssr怎么设置(ssr加速器节点)
  • 节点是什么意思(手机怎么换节点)
  • 「数据结构之字典树Trie」C语言版本实现
  • 网宿科技股份有限公司2021年年度报告摘要300017
  • 《重生之门》热播背后:悬疑剧集寻求差异化,阿里影业自制
  • 互联网后端技术大全!建议收藏
  • A股下半年行情走势的沙盘推演!第一阶段结束时间会是7月
  • 成为国家新基建核心,边缘计算的魅力到底在哪里
  • 牛客网高频算法题系列合并两个排序的链表
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。