相关疑难解决方法(0)

如何最好地优化这一小部分c#Linq代码

如果你看一下我们的街机主页:

http://www.scirra.com/arcade

在右上方有一个方框,显示最后一个玩这个游戏的人.在我正在使用的分析器中,它显示为运行900毫秒,这占总页面加载时间的大约80%.

查询相对简单:

// Recent players
using (MainContext db = new MainContext())
{
    var q = (from c in db.tblArcadeGamePlays
                join a in db.tblProfiles on c.UserID equals a.UserID
                where c.UserID != 0
                select new
                {
                    c.UserID,
                    c.tblForumAuthor.Username,
                    a.EmailAddress,
                    Date = (from d in db.tblArcadeGamePlays where d.UserID == c.UserID orderby d.Date descending select new { d.Date }).Take(1).Single().Date
                })
    .Distinct()
    .OrderByDescending(c => c.Date)
    .Take(16);
Run Code Online (Sandbox Code Playgroud)

但这对我的需求来说太慢了.

这上面的输出缓存不合适,因为这个盒子实时很好.此外,即使对于一个用户来说,正常页面加载的900毫秒也太慢,所以如果可能的话,希望避免这种情况.

有没有人对如何加快这一点有任何想法?我目前的两个想法是:

  • 一个新的数据库表,用于保存最后一个不需要加入的玩家
  • 存储在某个地方的字段,其中包含该框的HTML,每次发生的新游戏都会重建该字段
  • 两者结合

两种丑陋!任何帮助赞赏.

根据要求,linqpad的结果

LAMBDA

TblArcadeGamePlays
   .Join (
      TblProfiles, 
      c => c.UserID, 
      a …
Run Code Online (Sandbox Code Playgroud)

c# linq asp.net optimization performance

1
推荐指数
1
解决办法
208
查看次数

标签 统计

asp.net ×1

c# ×1

linq ×1

optimization ×1

performance ×1