Показать сообщение отдельно
Старый 22.06.2007, 07:41   #1  
3oppo is offline
3oppo
Участник
Аватар для 3oppo
 
222 / 32 (2) +++
Регистрация: 30.06.2005
Почему join запрос разбивается на подзапросы!?
Axapta 3.0 SP 3

Имеем запрос:

Код:
    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
{
	…….
	//Не значительный код, заполняется мап
}
При просмотре системным монитором видим:
Кол-во Select 4837 !!!!!?!?!? Почему?! Запрос отрабатывает порядка 25 минут

Написал такой же запрос в SQL Enterprise Manager отработал за 5 секунд!!
Прямой запрос, вставлять в код не очень хочется … .. . Подскажите в чём дело и что можно сделать?!