У меня есть следующие таблицы:
- CompanyHistory: Id StartDate EndDate
- CustomerHistory Id CompanyId StartDate EndDate
- CustomerPayment Идентификатор CustomerId StartDate Сумма EndDate
Я хочу сделать отчет для поиска всех платежей и их клиентов и их компаний в пределах определенного диапазона дат (firstDay, endDay).
Я сделал это, используя этот код только для CustomerPayment, и я должен сделать то же самое для таблиц CustomerHistory и companyHistory.
А производительность действительно плохая.
Есть ли способ улучшить запросы или мне следует изменить дизайн моей БД?
var payments= db.CustomerPayment.Where(s =>>
((firstDay <= s.EndDate && lastDay >= s.StartDate) &&
(lastDay <= s.EndDate || lastDay >= s.EndDate) &&
(firstDay > s.StartDate || firstDay < s.StartDate)) ||
((s.EndDate == null) && ((firstDay >= s.StartDate) ||
(firstDay <= s.StartDate && lastDay >= s.StartDate)));