1 回答

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í)踐中并未使用,而是更多地用于展示此問題的意圖。
- 1 回答
- 0 關(guān)注
- 101 瀏覽
添加回答
舉報(bào)