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秒,我们需要寻求解决这个问题,缩短响应时间。
有人有任何建议吗?
答案 0 :(得分:1)
你到底想要做什么?你能告诉我这里的架构吗?
这对我来说似乎是一个奇怪的陈述,因为我不知道架构:
p =&gt; p.Price.Any(d =&gt; d.EventDatetime.Month ......
但是,我会在黑暗中拍摄并说你可能遇到问题:
eventDC.GetBooks()
如果该方法调用存储过程或在数据库上执行“Select * From Books”,那么您实际在做的是:
如果是这种情况,那么这可能是你最大的问题。
答案 1 :(得分:0)
通常检查SQL以查看它生成的内容,您可以内联。有一个工具可以帮助你做到这一点,它叫做LinqPad,你可以创建一个LINQ查询,并调整LINQ查询。另外,寻找添加索引的地方;这也可以加快性能(太多的索引会影响性能,所以要小心)。