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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.06.2007, 08:32   #10  
3oppo is offline
3oppo
Участник
Аватар для 3oppo
 
222 / 32 (2) +++
Регистрация: 30.06.2005
Цитата:
Сообщение от glibs Посмотреть сообщение
Попробовал написать джоб похожий (на стандартной функциональности только). Select один при декларировании курсора. Дольше идут вызовы управления курсором.

Либо вы чего-то не договариваете...
.

Вот метод полностью:

X++:
protected Map initRasset01Map()
{
    Map             _ret          = new Map(Types::String, Types::Date);
    Set             _account01Set = this.initAccount01Set();
    RAssetTable     _rassetTable;
    RAssetTrans     _rassetTrans;
    LedgerTrans     _ledgerTrans;
    int             i, ip4, ip2, ip3;

    while select _rassetTable
       index RAssetNumIdx
        where _rassetTable.VGP_PropertyTax          == NoYes::Yes
    join firstonly _rassetTrans
        index TransTypeIdx
        where _rassetTrans.AccountNum               == _rassetTable.AccountNum          &&
              _rassetTrans.AssetTransType           == RAssetTransType::Acquisition     &&   
              _rassetTrans.TransDate                <= reportDateEnd
    join firstonly _ledgerTrans
        index VGP_LedgerLinkIdx
        where _ledgerTrans.VGP_LedgerLinkId         == _rassetTrans.VGP_LedgerLinkId    &&
              _ledgerTrans.VGP_LedgerLinkModuleRef  == VGP_LedgerLinkModuleRef::RAsset  &&   //ОС
              _ledgerTrans.Voucher                  == _rassetTrans.Voucher             &&
              _ledgerTrans.TransDate                == _rassetTrans.TransDate

    {
        i++;
        if (_account01Set.in(_ledgerTrans.AccountNum))
        {
            _ret.insert(_rassetTable.AccountNum, this.getDisposalDate(_rassetTable.AccountNum));
        }
    }

//    box::info( int2str(i) );

    return _ret;
}
Ставлю точку останова в начале метода и в конце, и между 2ми этими точками включаю монитор.
Переписал на прямой запрос в той же функции, выполняется вместо 26 минут - 30 секунд.


Цитата:
Сообщение от glibs Посмотреть сообщение
А какой вид у вас имеют все 4837 запроса? Они абсолютно одинаковы?

Посмотрел генерируемые запросы, вроде одинаковые вот такого вида:

SELECT A.TRANSDATE,A.RECID,A.VGP_LEDGERLINKID FROM RASSETTRANS A(INDEX(I_16077RASSETDATEIDX)) WHERE ((DATAAREAID=?) AND (((ACCOUNTNUM=?) AND (TRANSDATE<?)) AND ((((ASSETTRANSTYPE=?) OR (ASSETTRANSTYPE=?)) OR (ASSETTRANSTYPE=?)) OR (ASSETTRANSTYPE=?)))) OPTION(FAST 2)

внутри проскакивают 2-3 другого вида но непонятно к чему они относятся.

Цитата:
Сообщение от glibs Посмотреть сообщение
Может у вас сам метод столько раз вызывается? Тогда не удивлюсь насчет 25 мин.
Теги
производительность, запрос (query), ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Не отрабатывает запрос EXISTS JOIN Paul_ST DAX: База знаний и проекты 8 21.03.2008 17:21
запрос с 4 таблицами. Загадка с Join Андрей К. DAX: Программирование 7 19.09.2007 17:12
Почему на форме "Пользовательские настройки", когда я перехожу в нее из формы, отсутствует закладка "Запрос"? Hans DAX: Администрирование 0 05.07.2007 13:52
2 join-а + CasheLookup = EntireTable vallys DAX: Программирование 1 10.03.2006 13:20
можно ли сделать с помощью join следующий запрос: SergAY DAX: Программирование 1 29.07.2003 11:39

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 05:11.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.