第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

實(shí)體框架 -> 從數(shù)據(jù)庫中一一獲取記錄或一次獲取它們。哪個(gè)更快?

實(shí)體框架 -> 從數(shù)據(jù)庫中一一獲取記錄或一次獲取它們。哪個(gè)更快?

C#
猛跑小豬 2023-09-09 16:17:43
我收集了來自數(shù)據(jù)庫中兩個(gè)表的 Id。這兩個(gè)對象都有一個(gè)我需要的共同屬性。我將始終只選擇此屬性,但我的問題是:將 Id 的集合分成兩部分并從數(shù)據(jù)庫進(jìn)行兩個(gè)查詢或使用循環(huán)并從數(shù)據(jù)庫中一個(gè)接一個(gè)地獲取每個(gè)對象是否更好?第一種方法List<byte[]> binariesToAttach = new List<byte[]>();IEnumerable<someObj> Type1objects = toAppend.Where(a => a.Type == FileType.Type1Obj).Select(f => f.Id);IEnumerable<someObj> Type2objects = toAppend.Where(a => a.Type == FileType.Type2Obj).Select(f => f.Id);binariesToAttach.AddRange(this.UnitOfWork.Example1Repository.Get(s => Type1objects.Any(a => s.Id == a)).Select(f => f.Content));binariesToAttach.AddRange(this.UnitOfWork.Example2Repository.Get(s => Type2objects.Any(a => s.Id == a)).Select(f => f.Content));foreach (var item in binariesToAttach){    // TODO something}或第二種方法:foreach (var item in toAppend){    if (item.Type == FileType.Type1Obj)    {        byte[] data = this.UnitOfWork.Example1Repository.Get(a => a.Id == item.Id).Select(a => a.Content).FirstOrDefault();        // TODO something    }    else    {        byte[] data = this.UnitOfWork.Example2Repository.Get(a => a.Id == item.Id).Select(a => a.Content).FirstOrDefault();        // TODO something    }}就我個(gè)人而言,我認(rèn)為第二種方法更容易理解,這就是我更喜歡他的原因。但如果第一個(gè)更優(yōu)化的話..
查看完整描述

1 回答

?
SMILET

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

簡短而簡單的答案是,對于每次調(diào)用數(shù)據(jù)庫,都需要執(zhí)行多項(xiàng)操作,例如打開連接、身份驗(yàn)證、授權(quán)、關(guān)閉連接(可能我忘記了更多,但我不是 DBA,所以我'我對所采取的具體行動(dòng)有點(diǎn)模糊)。

針對每個(gè)請求都會(huì)采取這些操作。您發(fā)出的請求越多,需要完成的工作就越多。如果請求量足夠大,這種時(shí)間/精力就會(huì)嚴(yán)重消耗性能

因此,通常最好一次獲取所有數(shù)據(jù)。這里可能存在一些情況例外,但您應(yīng)該在盡可能少的請求中加載盡可能多的內(nèi)容。


作為未來的一般提示:您可以通過編寫一個(gè)小型控制臺(tái)應(yīng)用程序來輕松地自行進(jìn)行基準(zhǔn)測試,該應(yīng)用程序可以一次或逐條獲取 1000 行數(shù)據(jù),并比較完成任一任務(wù)所需的時(shí)間。


順便說一句,您的第一種方法存在問題。Any(a => a.Id == a.Id)總是true因?yàn)橐粋€(gè)值總是等于它自己。我假設(shè)您添加的代碼在實(shí)踐中并未使用,而是更多地用于展示此問題的意圖。


查看完整回答
反對 回復(fù) 2023-09-09
  • 1 回答
  • 0 關(guān)注
  • 101 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號