C#導(dǎo)出數(shù)據(jù)到excel如何提升性能
一,要提升性能,我們先要知道耗時(shí)的地方在哪里
1,數(shù)據(jù)庫(kù)查詢,
2,把數(shù)據(jù)組合成新集合循環(huán)嵌套太多
二,那我們?cè)趺磧?yōu)化呢?
一,數(shù)據(jù)庫(kù)查詢,
1》,數(shù)據(jù)庫(kù)查詢:如果數(shù)據(jù)量小,我們可以用臨時(shí)datatable,連表查詢,,可是如果是連表都是千萬(wàn)級(jí)上億數(shù)據(jù),就不建議用連表
那這個(gè)時(shí)候該怎么辦呢?
2》這個(gè)時(shí)候我們可以選擇先單表查詢,然后再循環(huán)體查詢自己所要的其他關(guān)聯(lián)數(shù)據(jù),這個(gè)時(shí)候我們需要注意的點(diǎn)是什么?
3》減少數(shù)據(jù)庫(kù)查詢?。。。。。。。?!這個(gè)是重點(diǎn),那怎么減少呢?正常邏輯如下代碼,可是數(shù)據(jù)量很耗性能
foreach (var item in listST) { var sModel= GetModel(); //如果這個(gè)方法每次都查詢一次數(shù)據(jù)庫(kù),會(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) { ////我們可以選擇每?jī)汕l數(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++; }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- C# 使用multipart form-data方式post數(shù)據(jù)到服務(wù)器
- 詳解C# 泛型中的數(shù)據(jù)類(lèi)型判定與轉(zhuǎn)換
- 詳解C#數(shù)據(jù)類(lèi)型及其轉(zhuǎn)換
- 詳解如何獲取C#類(lèi)中發(fā)生數(shù)據(jù)變化的屬性信息
- c# 利用易福門(mén)振動(dòng)模塊VSE002采集振動(dòng)數(shù)據(jù)的方法
- C#使用TensorFlow.NET訓(xùn)練自己的數(shù)據(jù)集的方法
- 基于C# 寫(xiě)一個(gè) Redis 數(shù)據(jù)同步小工具
- C#連接SQL Server數(shù)據(jù)庫(kù)的實(shí)例講解
- C# OleDbDataReader快速數(shù)據(jù)讀取方式(3種)
- c# 數(shù)據(jù)標(biāo)注與數(shù)據(jù)校驗(yàn)
相關(guān)文章
C# 定時(shí)器?;顧C(jī)制引起的內(nèi)存泄露問(wèn)題解決
這篇文章主要介紹了C# 定時(shí)器保活機(jī)制引起的內(nèi)存泄露問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02C#正則表達(dá)式Regex類(lèi)用法實(shí)例分析
這篇文章主要介紹了C#正則表達(dá)式Regex類(lèi)用法,實(shí)例分析了其中比較常見(jiàn)的幾類(lèi)用法,具有一定的實(shí)用價(jià)值,需要的朋友可以參考下2014-10-10C#備忘錄人生存檔的設(shè)計(jì)模式實(shí)例
這篇文章主要為大家介紹了C#設(shè)計(jì)模式中備忘錄模式的實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06unity實(shí)現(xiàn)簡(jiǎn)單的貪吃蛇游戲
這篇文章主要為大家詳細(xì)介紹了unity實(shí)現(xiàn)簡(jiǎn)單的貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03實(shí)例分享C#中Explicit和Implicit用法
本篇文章主要給讀者們分享了C#中Explicit和Implicit的用法,對(duì)此有需求和興趣的朋友們一起學(xué)習(xí)下吧。2017-12-12user32.dll 函數(shù)說(shuō)明小結(jié)
這篇文章主要介紹了user32.dll 函數(shù)說(shuō)明,需要的朋友可以參考下2018-06-06