Я работаю над проектом C# и использую SQL Server 2008 R2 express в качестве backend.Оптимизация запроса C# LINQ
Мне нужно найти количество заказов, где BookingDate's Date component
больше, чем tempDate
.
Я написал следующий код:
DateTime tempDate = new DateTime(DateTime.Now.Year, 4, 1); //<= 5ms
var bookings = context.Bookings.Where(x => x.IsDeleted == false).ToList(); //<= 2ms
var count = bookings.Count(x => x.BookingDate.Date >= tempDate); //<= 2,534 ms
Этот код работает и дает мне правильный подсчет, но его принимают почти 3 секунды, чтобы выполнить (я нашел время выполнения с помощью VS 2015). Я хочу оптимизировать этот код, чтобы сократить время выполнения. Таблица бронирования содержит почти 20 000 записей.
Как свести к минимуму затраты на вычисление?
Проблема, скорее всего, вызов ToList(), который выбирает все к сторона клиента. –
@ba__другой: можете ли вы предложить обходное решение –
ToList() не требуется для подсчета заказов, просто удалите его. Затем EF генерирует только оператор SQL в форме 'SELECT COUNT (*) FROM' .. –