sql优化——踩坑

本专栏用于与记录本人(新人程序员)遇到的有学习意义的问题及总结

总结:

sql优化思路优先考虑索引
1、创建临时表的同时也意味着原表索引失效,当临时表很大的时候将非常影响效率。
2、可以将经常使用到的字段创建为索引。
3、虽然子查询会影响效率,但和索引相比微乎其微,比如这次优化的sql有很多很多子查询
,但不是影响效率的主要因素

问题:优化一个查询效率非常低的sql,查询需要300秒。sql特点:比较长(几百行)、有很多子查询

结果:优化至2秒内(可见索引的重要性)

开始优化的思路是考虑如何将子查询优化,最后发现效率提升微乎其微。然后才转变为正确的思路:从索引下手。

【1】首先,该sql有三个临时表,其中两个临时表数据量很大(十万级),临时表没有索引!优化思路就很明显:舍弃临时表,在使用临时表的地方写等价sql。这是查询时间已经到了52秒左右

【2】其次,通过观察sql发现有一个表的一个字段经常被使用,且经常被用于group by ,然后查询数据库发现该字段没有索引,遂加上。这时怎么查询时间已经降低至1~2秒了,其实还有可以优化的地方。

【3】观察到该sql用于页面展示,但是系统组件做分页查询到逻辑是将数据全部查出再进行分页操作,可以自定义方法,写分页查询,只查询需要的数据。

至此,优化完毕

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值