C#導(dǎo)出數(shù)據(jù)到excel如何提升性能
一,要提升性能,我們先要知道耗時(shí)的地方在哪里
1,數(shù)據(jù)庫查詢,
2,把數(shù)據(jù)組合成新集合循環(huán)嵌套太多
二,那我們?cè)趺磧?yōu)化呢?
一,數(shù)據(jù)庫查詢,
1》,數(shù)據(jù)庫查詢:如果數(shù)據(jù)量小,我們可以用臨時(shí)datatable,連表查詢,,可是如果是連表都是千萬級(jí)上億數(shù)據(jù),就不建議用連表
那這個(gè)時(shí)候該怎么辦呢?
2》這個(gè)時(shí)候我們可以選擇先單表查詢,然后再循環(huán)體查詢自己所要的其他關(guān)聯(lián)數(shù)據(jù),這個(gè)時(shí)候我們需要注意的點(diǎn)是什么?
3》減少數(shù)據(jù)庫查詢?。。。。。。。。∵@個(gè)是重點(diǎn),那怎么減少呢?正常邏輯如下代碼,可是數(shù)據(jù)量很耗性能
foreach (var item in listST)
{
var sModel= GetModel(); //如果這個(gè)方法每次都查詢一次數(shù)據(jù)庫,會(huì)很耗性能?。?!導(dǎo)致循環(huán)循環(huán)很慢!,即時(shí)使用緩存也會(huì)很慢
item.name = sModel.name;
}
4》我們可以換一種思路,優(yōu)化如下代碼:
List<Student> listST = new List<Student>();
List<int> listInt = new List<int>();
int g = 0;
foreach (var item in listST)
{
////我們可以選擇每兩千條數(shù)據(jù)查詢一次
////保存成一個(gè)集合
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++;
}
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C# 使用multipart form-data方式post數(shù)據(jù)到服務(wù)器
- 詳解C# 泛型中的數(shù)據(jù)類型判定與轉(zhuǎn)換
- 詳解C#數(shù)據(jù)類型及其轉(zhuǎn)換
- 詳解如何獲取C#類中發(fā)生數(shù)據(jù)變化的屬性信息
- c# 利用易福門振動(dòng)模塊VSE002采集振動(dòng)數(shù)據(jù)的方法
- C#使用TensorFlow.NET訓(xùn)練自己的數(shù)據(jù)集的方法
- 基于C# 寫一個(gè) Redis 數(shù)據(jù)同步小工具
- C#連接SQL Server數(shù)據(jù)庫的實(shí)例講解
- C# OleDbDataReader快速數(shù)據(jù)讀取方式(3種)
- c# 數(shù)據(jù)標(biāo)注與數(shù)據(jù)校驗(yàn)
相關(guān)文章
C#使用iTextSharp庫將圖片轉(zhuǎn)換為PDF
iTextSharp 是一個(gè)開源的 .NET 庫,主要用于創(chuàng)建和操作 PDF 文檔,本文主要介紹了如何使用 C# 和 iTextSharp 將圖片轉(zhuǎn)換為 PDF 的功能,需要的可以參考下2024-12-12
AOP從靜態(tài)代理到動(dòng)態(tài)代理(Emit實(shí)現(xiàn))詳解
AOP為Aspect Oriented Programming的縮寫,意思是面向切面編程的技術(shù)。下面這篇文章主要給大家介紹了關(guān)于AOP從靜態(tài)代理到動(dòng)態(tài)代理(Emit實(shí)現(xiàn))的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-09-09

