Эффективность запроса linq диапазона дат - PullRequest
1 голос
/ 15 февраля 2012

Мне было поручено разработать страницу для создания отчета об инвентаризации / продажах для базы данных инвентаризации сервера sql, состоящей из следующего: начальный запас, запас на конец дня, доставленные товары, проданные товары за определенный день или диапазондней.

В конечном итоге я использовал цикл for, чтобы просмотреть диапазон дней, для которого необходима статистика, и вести подсчет статистики за каждый день, который возвращается из моего запроса.

В таблице деталей есть поле с именем количества, которое отслеживает текущий запас для каждого предмета в инвентаре.Таблица поставок содержит записи о том, когда товары доставляются, а таблица продаж содержит записи о том, когда были сделаны продажи.

Из-за определенных ограничений мне удалось определить конечный запас только на определенный день дляданный товар, беря текущее количество товара на складе и вычитая из него доставленное количество и добавляя к этому количеству количество, проданное за этот день.Затем я делаю это x количество раз для каждого дня в диапазоне дат, необходимых при сохранении промежуточного подсчета итогов.

Чтобы получить статистику за один день, следующий запрос выполняется адекватно, но когда статистиканеобходимы в течение нескольких дней, производительность ухудшается довольно сильно.Как я уже сказал, я не очень хорошо разбираюсь в linq и буду очень признателен за помощь в улучшении производительности следующего запроса.

edit: код не работает

Ответы [ 2 ]

2 голосов
/ 15 февраля 2012

Для такого сложного запроса LINQ просто не подходит для работы. Представление «Статистика» даст вам простой запрос на то, что вам нужно, чтобы получить индивидуальную статистику, тогда оттуда будет легко получить агрегат

2 голосов
/ 15 февраля 2012

Лучший способ повысить производительность - перенести всю эту логику в базу данных, например, путем создания представления.Когда дело доходит до объединения и поиска данных, очень сложно быть быстрее БД.

...