zoukankan      html  css  js  c++  java
  • C#导出大量数据到excel,怎么提升性能

    一,要提升性能,我们先要知道耗时的地方在哪里

    1,数据库查询,
    2,把数据组合成新集合循环嵌套太多

    二,那我们怎么优化呢?

    一,数据库查询,
    1》,数据库查询:如果数据量小,我们可以用临时datatable,连表查询,,可是如果是连表都是千万级上亿数据,就不建议用连表
    那这个时候该怎么办呢?
    2》这个时候我们可以选择先单表查询,然后再循环体查询自己所要的其他关联数据,这个时候我们需要注意的点是什么?
    3》减少数据库查询!!!!!!!!!这个是重点,那怎么减少呢?正常逻辑如下代码,可是数据量很耗性能

    foreach (var item in listST)
    {
        var sModel= GetModel();  //如果这个方法每次都查询一次数据库,会很耗性能!!!导致循环循环很慢!,即时使用缓存也会很慢
        item.name = sModel.name;
    }

    4》我们可以换一种思路,优化如下代码:

    List<Student> listST = new List<Student>();
    List<int> listInt = new List<int>();
    int g = 0;
    foreach (var item in listST)
    {
        ////我们可以选择每两千条数据查询一次
        ////保存成一个集合
        if (g % 2000 == 0)
        {
              listST = GetList($"id in ({string.Join(",", listST.Skip(g).Take(2000).Select(m => m.id).Distinct().ToArray())})", 2000, 1, "name,Id");
        }
        var sModel = listST.FirstOrDefault(m => m.id == item.id);
        item.name = sModel.name;
        g++;
    }


    二,把数据组合成新集合循环嵌套太多,这个就是优化逻辑,减少循环嵌套

  • 相关阅读:
    Centos Another app is currently holding the yum lock
    Centos 重置密码
    Effective c#学习笔记(1)
    浅谈计算机编码
    mongodb java spring data
    VS2013 好用的插件
    xml存储bug
    VS 2008 生成操作中各个选项的差别
    程序权限控制
    给钛度产品的一些建议(Note)
  • 原文地址:https://www.cnblogs.com/May-day/p/11322409.html
Copyright © 2011-2022 走看看