Показать сообщение отдельно
Старый 30.01.2004, 09:28   #21  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,709 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
У меня в SQL - профайлере получились такие результаты:

-) Statment
exec sp_cursorfetch 180150002, 2, 1, 1
exec sp_cursor 180150002, 40, 1

Всего, около 2000 команд общей продолжительностью 5 секунд

-) While select
exec sp_cursorfetch 180150001, 2, 1, 8

Всего около 125 команд общей продолжительностью 0.5 секунд

Т.е. если я правильно понял - это просто так работает Axapta, что из родных таблиц тянет данные бОльшими кусками

Тогда возвращаемся к тому, с чего началась данная тема:

При сложных выборках, когда не всю информацию можно получить из Query (требуются дополнительные сложные вычисления) есть путь кардинального (на порядок и больше) увеличения скорости получения выборки. Это то, что я описал в самом начале данной темы

-) Создать таблицу на сервере
-) Выполнить хранимую процедуру сервера по наполнению этой таблицы
-) Средствами Axapta сделать выброс из этой таблицы в текстовый файл

Правда в такой идеологии 2 большие проблемы:
-) Конвертация Query в синтаксис MS SQL
-) Генерация значений RecID в таблице

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

Вобщем теперь понятно, что происходит. Спасибо.