IQueryable<WebEvent> mySearch = 
    eventDC.GetBooks()
        .Where(p => p.Price.Any(d => d.EventDatetime.Month == fromDate.Month 
                                     && d.EventDatetime.Year == fromDate.Year))
        .WithGroup(groupId)
        .OrderBy(p => p.Price.Where(r => r.Datetime >= fromDate)
                             .OrderBy(q => q.Datetime)
                             .FirstOrDefault().Datetime);
List<Book>ventsList = mySearch.ToList<Book>();

我们有这么长的查询,在获取书籍和排序方面消耗了很多时间,经过性能测试,我们发现包含这个查询的页面响应时间超过10秒,我们需要寻求解决这个问题并减少响应时间。

有人有什么建议吗?

有帮助吗?

解决方案

通常检查SQL,看看它的生产,它可以做内联。有一个工具,可以帮助你做到这一点,这就是所谓的LinqPad,你可以创建一个LINQ查询和玩扭捏LINQ查询。另外,找地方添加索引;这样可以加快性能太(索引太多会损害性能,所以要小心太)。

其他提示

你到底想做什么?你能给我一个关于这里的模式的想法吗?

这对我来说似乎是一个奇怪的说法,因为我不知道架构:

p => p.Price.Any(d => d.EventDatetime.Month...

但是,我要在黑暗中尝试一下,并说您可能会遇到以下问题:

eventDC.GetBooks()

如果该方法调用存储过程或以其他方式在数据库上执行“Select * From Books”,那么您实际要做的是:

  1. 从数据库中选择所有书籍
  2. 获取结果列表并从中仅选择您想要的书籍

如果是这种情况,那么这可能是您最大的问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top