簡體   English   中英

如何避免太多的數據庫之旅

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM