Цитата:
Сообщение от
oleg_e
Будем считать, что индексы расставлены.
А можно полюбопытствовать, какие ?
1. Рекомендую избавится от использования в условии запроса переменной includeEstimated, использовав несколько специализированных запросов и при необходимости подпроцедуру для тела цикла
2. Вместо конструкций вида
Цитата:
Сообщение от
oleg_e
((inventTrans.StatusReceipt == StatusReceipt::None && inventTrans.StatusIssue == StatusIssue::Sold) ||
(inventTrans.StatusReceipt == StatusReceipt::Purchased && inventTrans.StatusIssue == StatusIssue::None))
в Аксапте лучше использовать
(inventTrans.StatusReceipt == StatusReceipt::None || inventTrans.StatusReceipt == StatusReceipt::Purchased) &&
(inventTrans.StatusIssue == StatusIssue::None || inventTrans.StatusIssue == StatusIssue::Sold)
3. Даты тоже можно немного оптимизировать, меняем
Цитата:
Сообщение от
oleg_e
(inventTrans.DateFinancial
&& inventTrans.DateFinancial >= dateFrom && inventTrans.DateFinancial <= dateTo) ||
(!inventTrans.DateFinancial
&& inventTrans.DateExpected >= dateFrom && inventTrans.DateExpected <= dateTo))
на
inventTrans.DateFinancial >= dateFrom
&& (inventTrans.DateFinancial && inventTrans.DateFinancial <= dateTo ||
(!inventTrans.DateFinancial
&& inventTrans.DateExpected >= dateFrom && inventTrans.DateExpected <= dateTo))
PS. А лучше всего поймать этот запрос в MS SQL Profiler и посмотреть его план выполнения