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++;
    }


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

  • 相关阅读:
    [数据结构]二分查找
    [数据结构]堆排序
    [数据结构]冒泡排序
    android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale"
    android:hardwareAccelerated="true"
    Android 图形处理
    Android 屏幕适配
    Android 手机的屏幕分辨率大小汇总
    Android 模拟器常用的快捷键
    PopWindow的使用
  • 原文地址:https://www.cnblogs.com/May-day/p/11322409.html
Copyright © 2011-2022 走看看