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 = ;
foreach (var item in listST)
{
////我们可以选择每两千条数据查询一次
////保存成一个集合
if (g % == )
{
listST = GetList($"id in ({string.Join(",", listST.Skip(g).Take(2000).Select(m => m.id).Distinct().ToArray())})", , , "name,Id");
}
var sModel = listST.FirstOrDefault(m => m.id == item.id);
item.name = sModel.name;
g++;
}
二,把数据组合成新集合循环嵌套太多,这个就是优化逻辑,减少循环嵌套
C#导出大量数据到excel,怎么提升性能的更多相关文章
- PHP导出MySQL数据到Excel文件
PHP导出MySQL数据到Excel文件 转载 常会碰到需要从数据库中导出数据到Excel文件,用一些开源的类库,比如PHPExcel,确实比较容易实现,但对大量数据的支持很不好,很容易到达PHP内存 ...
- .NET使用Office Open XML导出大量数据到 Excel
我相信很多人在做项目的都碰到过Excel数据导出的需求,我从最开始使用最原始的HTML拼接(将需要导出的数据拼接成TABLE标签)到后来happy的使用开源的NPOI, EPPlus等开源组件导出EX ...
- 导出数据库数据制成Excel和txt
引用ICSharpCode.SharpZipLib.dll 1.编写压缩和解压代码 using System; using System.Collections.Generic; using Syst ...
- java 对excel操作 读取、写入、修改数据;导出数据库数据到excel
============前提加入jar包jxl.jar========================= // 从数据库导出数据到excel public List<Xskh> outPu ...
- C#通过OLEDB导出大数据到Excel
C#导出数据到Excel,基本有两种方法,一种方法是通过Microsoft.Office.Interop.Excel.Application,一行一列的写入Excel中:另一种方法是通过OLEDB,利 ...
- PHP导出MySQL数据到Excel
经常会碰到需要从数据库中导出数据到Excel文件,用一些开源的类库,比如PHPExcel,确实比较容易实现,但对大量数据的支持很不好,很容易到达PHP内存使用上限.这里的方法是利用fputcsv写CS ...
- 导出表格数据到excel并下载(HSSFWorkbook版)
这里主要前面是通过一个全局变量,在layui的done回调里拿到数据,然后将该数据导出到excel,这里要注意一点,下载excel不能用ajax方式,如果采用ajax下载默认会读取response返回 ...
- Vue中使用js-xlsx导出Data数据到Excel
需要引入的第三方JS有:export.js.xlsx.extendscript.js.xlsx.full.min.js JS太大不贴出来,放一个可下载百度云连接:https://pan.baidu.c ...
- PHP导出大量数据到excel表格
/** * @creator Jimmy * @data 2016/8/22 * @desc 数据导出到excel(csv文件) * @param $filename 导出的csv文件名称 如date ...
随机推荐
- BZOJ 4488: [Jsoi2015]最大公约数 暴力 + gcd
Description 给定一个长度为 N 的正整数序列Ai对于其任意一个连续的子序列 {Al,Al+1...Ar},我们定义其权值W(L,R )为其长度与序列中所有元素的最大公约数的乘积,即W(L, ...
- wannalfy 挑战赛8 F 白云的树(树形dp)
链接:https://www.nowcoder.com/acm/contest/57/F 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524288K 64b ...
- Redis大key的发现与删除方法全解析
个推作为国内第三方推送市场的早期进入者,专注于为开发者提供高效稳定的推送服务,经过9年的积累和发展,服务了包括新浪.滴滴在内的数十万APP.由于我们推送业务对并发量.速度要求很高,为此,我们选择了高性 ...
- shell命令别名
~/.bashrc文件 [root@linuxzgf ~]# vi ~/.bashrc 在alias cp='cp -i'前加上"#"注释,重新登录即可实现复 ...
- spring boot中使用ehcache
1在启动类上使用注解 @SpringBootApplication @EnableCaching public class ConfApplication { ...... } 2在resources ...
- squid的处理request和reply的流程
request处理: Breakpoint , SQUID_MD5Final ( digest= { (gdb) bt # SQUID_MD5Final ( digest= # ) at store_ ...
- linux交叉编译Windows版本的ffmpeg
主要参考http://www.cnblogs.com/haibindev/archive/2011/12/01/2270126.html 在我的机器上编译libfaac的时候 出现问题了 输出如下 . ...
- 1443:【例题4】Addition Chains
1443:[例题4]Addition Chains 题解 注释在代码里 注意优化搜索顺序以及最优化剪枝 代码 #include<iostream> #include<cstdio&g ...
- 五、python中MD5加密
import hashlib '''用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法'''##### ...
- leetcode 113 path Sum II 路径和
递归先序遍历+vector<int>容器记录路径 /** * Definition for a binary tree node. * struct TreeNode { * int va ...