Цитата:
Сообщение от
demianimp
Дополню, что если запрос выполнить на SQL. Без участия аксапты, то выдает все данные быстро.
Вы неправильно их готовите
Физически, Aхapta всегда оборачивает запрос в курсор-SQL, а план выполнения для курсора может принципиально отличаться от плана выполнения для запроса
Т.е. для целей тестирования именно производительности запроса в SQL надо делать так
X++:
DECLARE test CURSOR FOR
select *
from ledgerTrans with (index (ACDate)) //Имя индекса будет другое
where ledgerTrans.dataAreaId = 'dat' // Если есть dataAreaId
and ledgerTrans.AccountNum = "AccountNum"
and ledgerTrans.TransDate <= '20200229'
and ledgerTrans.Posting = 14 --LedgerPostingType::LedgerJournal
open test
// Тормоза ожидаются вот здесь
FETCH NEXT FROM test
//Перебор записей
WHILE @@FETCH_STATUS = 0
begin
FETCH NEXT FROM test
end
CLOSE test
DEALLOCATE test
И вот это уже у этого надо смотреть план выполнения запроса и замерять время выполнения.
Правда обычно тормоза бывают на самом первом шаге. На самом первом FETCH. Дальше обычно все быстро идет. Если же тормоза наблюдаются в процессе перебора записей, то попробуйте для начала перестроить индексы...