AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.12.2006, 17:16   #1  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 868 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
Есть простой способ.
Надо сделать вставку recordinsertlist.insertdatabse(); в несколько раз реже, чтобы запихивалась не 1-10 записей а сразу 1000-2000.

Цитата:
для меня сюрпризом были, что запрос из while select исполняется по мере выполнения цикла
селект делается 1 раз, все остальное просто вытягивание результатов с сервака по мере надобности.

Последний раз редактировалось Wamr; 27.12.2006 в 17:21.
Старый 27.12.2006, 17:43   #2  
Oleksandr is offline
Oleksandr
Участник
Аватар для Oleksandr
 
68 / 17 (1) ++
Регистрация: 19.03.2005
Адрес: Киев
Цитата:
Сообщение от Wamr Посмотреть сообщение
Есть простой способ.
Надо сделать вставку recordinsertlist.insertdatabse(); в несколько раз реже, чтобы запихивалась не 1-10 записей а сразу 1000-2000.
Он делается один раз вообще, я ошибся в коде

Цитата:
Сообщение от Wamr Посмотреть сообщение
селект делается 1 раз, все остальное просто вытягивание результатов с сервака по мере надобности.
Гм, но почему так долго, елси набор данных уже есть, или это нормально?
Систем монитор, кстати, говорить что количество селектов соотв. количеству записей...

Код:
    AgreementTable      agreementTable;
    ContractTable       contractTable;
    ContractPartTable   contractPartTable;
    ;
    prognosisLineList   = new RecordInsertList(tablenum(PrognosisLines));
    prognosisList       = new RecordSortedList(tablenum(PrognosisLines));
    prognosisList.sortOrder(fieldnum(PrognosisLines, PrognosisId),
                            fieldnum(PrognosisLines, AgreementNum),
                            fieldnum(PrognosisLines, ProductNum),
                            fieldnum(PrognosisLines, StartDate),
                            fieldnum(PrognosisLines, YearMonth));

    ttsbegin;

    while select agreementTable
        where agreementTable.DeliveryCategory           == deliveryCategory
        join contractTable
            where contractTable.DeliveryCategory        == agreementTable.DeliveryCategory
                 ---
            join contractPartTable
                where contractPartTable.ContractNum     == contractTable.ContractNum
                 ---
                     {
        this.writePrognosisLines(agreementTable,
                                 contractTable,
                                 contractPartTable); // опрерации + вставка
    }

    prognosisLineList.insertDatabase();
    this.prognosisTotals();

    ttscommit;
__________________
--
regards, Oleksandr
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
mazzy: Сравнительное тестирование производительности Microsoft Axapta v.3.0. CУБД Microsoft SQL Server 2005 и Microsoft SQL Server 2000 Blog bot DAX Blogs 0 28.10.2006 17:22
Fred Shen: Convert Axapta date type value to datetime type value in SQL Server Blog bot DAX Blogs 0 28.10.2006 16:40
Доступ к VIEW SQL SERVER из Axapta 111andrei DAX: Программирование 13 02.12.2005 11:19
AX-05-020 Axapta Database MS-SQL MadLight DAX: Администрирование 9 12.01.2005 14:52
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:49.