有关慢uri优化,慢Sql优化

最近对sql优化,还有uri慢接口优化,遇到一些比较有意思的事情,这记录一下

最近接手APP产品,被用户吐槽蛮多的,主要是入库和出库的流程比较慢,查询慢。
看了一下同事写的代码,果然,复杂条件的查询写不出来就导致初级程序员容易foreach里面写dao,而且还是四层for循环里面不断调用dao取某一条件的数据。
这就导致一个接口要和数据库做几十万此io交互。希望大家以此为戒。
这里给出优化思路,也可能是我现在思维局限,想不出来更好的思路,因为每过一段时间去看之前写的代码都感觉很呆,哈哈哈相信大家也会有一样的想法。
	1)减少和磁盘的io交互。
			外键left join on关联条件,涉及到去重在sql中完成 。
	2)适当在where字段建立索引,尽量根据业务场景建立联合索引,这里需要针对字段做总结,最多的必填字段建立联合索引,用的最频繁的字段在联合索引的最左边,因为索引的维护也需要一定的开销。(具体为什么在最左边可以自行百度)
	3)多选查询应该也是一次拿到所有的数据在代码层做数据筛选,有的查询可以是2的n次方中情况,这里需要结合for进行判断。
	4) 可以结合阿里巴巴的druid数据库连接池做简单的慢uri和慢sql的监控。及时优化。
	5)使用exists和not exists的时候注意小表在外,大表在内,可以一定程度上优化性能。
	6)百万以上的数据查询依旧会很慢,这时候需要做其他处理。
	7)针对慢uri,存在接口调用的情况,这里我给的方法是同步改异步。采用多线程的方式进行远程api的调用,我们业务场景主要是数据推送,并不关心实时返回结果,等远程api返回结果以后再对记录做update.毕竟一次完整的http在并发比较大的情况下就会显得很漫长,所以还必须要把同步代码改为异步的。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值