У меня есть следующий запрос Linq, и я обнаружил, что вызов LastRenewed, где я выполняю соединение и порядок, занимает почти минуту. Выполняя заказ, вы сокращаете время запроса на 30 секунд. Есть ли способ, которым я могу оптимизировать вызов LastRenewed?Оптимизация запроса Linq: order by
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(),
...
}
Сколько данных вы возвращаете? – Greg
У вас есть индекс в столбце LastRenewed? – Sam
Если вы запрашиваете много данных, я бы использовал context.SQLQuery и вызывать хранимую процедуру для получения ваших данных. EF классный и все для несложных запросов, но SQL Engline в некоторых случаях неизбежно будет работать намного быстрее. –