【发布时间】:2010-01-08 14:57:10
【问题描述】:
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 - 理想情况下,查询某种形式的执行计划和瓶颈。
-
我使用 linq to entity ,如何获取生成的 sql ?
-
使用
ObjectQuery.ToTraceString()或 SQL Profiler。 LINQPad 在这里也很有帮助。 -
我已经为您重新格式化了它,但是这样做清楚地表明该代码实际上不会编译。你需要自己解决这个问题。
标签: c# asp.net linq linq-to-entities database-optimization