代码优化

最近,生产环境发现一个一览的查询,导出excel,发现超过300条数据就没有办法导出,我被安排来解决这个问题,当时我的想法是,300条数据不算多,也不是动态导出EXCEL,要么是SQL需要优化,要么代码的写法有问题。

根据我自己的想法,我便开始做了分析,看了一下原来的代码实现,有如下点:

  1. 使用了HQL来全表查询
  2. 对于字典值全部是在service里面调用共通方法的sql来转义
  3. 在service里面对于全表数据转义后的结果中相关字段进行了加密

我的分析方法:

在好几处调用的地方,我都打印了时间,然后看一下是哪一块耗时比较多,着重对那一块进行优化。

我发现在HQL将数据查出来之后,在service进行字典转义的时候耗时很多,甚至会卡死在这里。之所以是在这里出问题,因为要循环list,然后对每个元素进行判断,一个vo就有100多个属性,这样就比较耗时。

我的解决方法:

不采用原来直接用HQL的方法,而是采用纯SQL,在SQL中尽量将数据字典进行转换,我查了一下数据量大的时候,SQL耗时也不是很多,觉得这种方案可行,所以我就修改了原来的代码。

最后在生产环境进行测试,顺利通过,而且效率也高了不少。其中我看了一下一览画面也就只有8个字段显示,然而原来的代码也是直接HQL,查询所有字段,但是在画面的字典比较少,没有出现问题。但是我个人还是比较倾向于,用SQL,只查询需要的字段,不需要的字段不用查找,这样数据库查询方面的性能会有所改善。

最后想说的是,有的可以共通的东西可以通过参数之类的进行控制,避免冗余代码,但是不要为了简单,就随便的进行全表查询,这样比较耗时。

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值