[英]How to avoid too many trip to database
我有這些課
class Match
{
int MatchID,
int TeamID, //used to reference Team
... other fields
}
注意:比賽實際上有2個團隊,這意味着2個TeamID
class Team
{
int TeamID,
string TeamName
}
在我看來,我需要顯示List<Match>
TeamName的List<Match>
。 所以我增加了另一個領域
class Match
{
int MatchID,
int TeamID, //used to reference Team
... other fields
string TeamName;
}
我現在可以做
Match m = getMatch(id);
m.TeamName = getTeamName(m.TeamId); //get name from database
但是對於List<Match>
, getTeamName(TeamId)
將進入數據庫以獲取每個TeamID的TeamName。
對於每頁10個匹配項的頁面,可能是(10x2Teams)=20
到數據庫的行程。
為了避免這種情況,我想到了一次加載所有內容,將其存儲在內存中,而僅在內存中查找TeamName的想法。 這讓我重新考慮,如果記錄是5000或更多。
有更好的方法嗎? 謝謝。
對每頁執行緩存-將當前包含10個匹配項的ID列表匯總在一起,然后加載所有具有其中一個ID的團隊。
您沒有說如何訪問數據,但是如果您使用SQL,則IN是您的朋友。
select * from teams were id in ('1', '2', '3', '4')
或者,您可以首先使用join語句將您的比賽加載到團隊中,然后在填充比賽數據的同時填充團隊數據。
我會同意到目前為止給出的答案。 我只是在擴展Matt的答案。 如果您在對象中需要所有這些數據,則在單次訪問數據庫的過程中發出多個sql語句會更有效。 這將在單個數據庫命中中返回多個表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.