【发布时间】:2015-03-06 00:17:20
【问题描述】:
我有以下 Linq 查询,我发现我在其中执行 join 和 order by 的 LastRenewed 调用需要将近一分钟。以 out 的顺序将查询时间减少 30 秒。有没有办法优化 LastRenewed 调用?
from stats in db.Stats
group stats by stats.Id into st
join logs in db.Logs on st.Key equals logs.Id
select new
{
//bunch of queries
...
LastRenewed = (from books in (db.Books.Where(x => x.BookId == st.Key))
join customer in db.Customers on books.Id equals customer.Id
orderby customer.LastRenewed descending
select customer.LastRenewed)
.FirstOrDefault(),
...
}
【问题讨论】:
-
你返回了多少数据?
-
LastRenewed 列上是否有索引?
-
如果您要查询大量数据,我会使用 context.SQLQuery
并调用存储过程来获取您的数据。 EF 很酷,适用于简单的查询,但 SQL Engline 在某些情况下不可避免地会运行得更快。 -
显示相关的数据库架构