当前位置: 首页 > news >正文

数据量过大的时候导出数据很慢

原因解析

速度慢无非两个原因:

  • sql取数很慢
  • 程序很慢

sql很慢有3种原因:

  • sql本身查询不合理,需要优化
  • 数据库没有索引
  • 多次频繁访问数据,造成了不必要的开销

取消多次获取数据,一次获取

  • 框定一个大致的范围,获取此次查询的所有数据
  • 使用map设置数据,没有主键使用傅和主键拼接数据
// 使用deliId作为key,将所有未分摊折扣存储在一个Map中
Map<Long, List<SemisteelDiscountPerrow>> discountMap = allDisocuntList.stream().collect(Collectors.groupingBy(SemisteelDiscountPerrow::getDeliId));

// 将数据回填到excel中
map.forEach((key,value) -> {

    valMap[0] = new HashMap(12);
    valMap[0].put("company", value.getCompany());
    valMap[0].put("zyear", value.getZyear());
    valMap[0].put("zmonth", value.getZmonth());
    valMap[0].put("customer", value.getCustomer());
    valMap[0].put("saleOrder", value.getSaleOrder());
    valMap[0].put("deliveryOrder", value.getDeliveryOrder());
    valMap[0].put("wlCode", value.getWlCode());

    dataListChild[0] = new ArrayList<>();
    Map<String, Object> discMap = new HashMap<String, Object>();
    SemisteelDiscountPerrow entity = new SemisteelDiscountPerrow();
    entity.setDeliId(value.getDeliId());
    // List<SemisteelDiscountPerrow> discountList = queryNoZero(entity);
    // 避免使用数据库多次查询,直接使用上面的allDisocuntList查询的数据
    List<SemisteelDiscountPerrow> discountList = discountMap.get(value.getDeliId());
    for (SemisteelDiscountPerrow discount2 : discountList) {
        discMap.put(discount2.getDiscountType(),discount2.getRowDiscount());
    }
    dataListChild[0].add(discMap);
    valMap[0].put("discount", dataListChild[0]);



    list.add(valMap[0]);
});
http://www.dtcms.com/a/60484.html

相关文章:

  • 蓝桥杯备赛-基础训练(四)字符串 day17
  • 初识Spring Batch:开启批处理的高效之旅
  • 软件性能测试与功能测试联系和区别
  • 采用面向对象方式计算三角形面积 - V2.0
  • 【C语言】考研复试上机代码题(基础篇)
  • 经销商管理系统选型解析:8款产品详评
  • 惊喜操作!强制DeepSeek和豆包轻松生成你的专属图片提示词
  • MySQL(社区版)安装过程
  • NAT NAPT
  • RK3568 SD卡调试记录
  • listen EACCES: permission denied 0.0.0.0:811
  • AI Agent开发框架分析:前端视角
  • C++ Qt开发成长之路,从入门到企业级实战项目,保姆级学习路线
  • 机器学习——逻辑回归实战2——预测拖欠款
  • 春风有信 温暖传情---平安养老险陕西分公司开展妇女节特别活动
  • Spring上下文工具类
  • 语文-文章题材
  • 02_LangChain整合DeepSeek提示词工程应用实践
  • 深入理解pytest框架中的conftest.py:使用与作用原理
  • 探索AI对冲基金:开源自动化交易系统的革新之路
  • 配置Hadoop集群
  • Markdown编辑器使用指南(适用于Typora)
  • 牛客周赛 Round 84——小红的陡峭值(四)
  • FPGA入门教程
  • Gini系数的应用 - 指标波动贡献分析
  • 【Matlab仿真】如何解决三相交流信号源输出波形失真问题?
  • 多模态推理模型相关开源工作
  • 【TMS570LC4357】之工程创建
  • 【Leetcode 每日一题】2269. 找到一个数字的 K 美丽值
  • 通义万相2.1技术深度解析