Показать сообщение отдельно
Старый 18.09.2009, 18:38   #9  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
1. Ещё в куске
X++:
...
select firstonly Voucher,AccountNum,SettleAmountCur,TransDate,AmountCur from custTrans
            while select Voucher, AccountNum, SettleAmountCur, TransDate, AmountCur from custTrans
                index hint AccountDateIdx
                where custTrans.Voucher     == qLedgerTrans.Voucher  && //dspic: ledgerTrans --> qLedgerTrans
                      custTrans.AccountNum  == qLedgerTrans.AccountNum   //dspic: ledgerTrans --> qLedgerTrans
...
Можно поменять местами порядок полей в условии на:
X++:
...
where custTrans.AccountNum  == qLedgerTrans.AccountNum //dspic: ledgerTrans --> qLedgerTrans
   &&  ustTrans.Voucher     == qLedgerTrans.Voucher  && //dspic: ledgerTrans --> qLedgerTrans
(Это приведет условия в соответствие с индексом)

2. Было бы ещё неплохо в кверю GroupFinancLedgerJournalTrans на самый верхний уровень загнать таблицу LedgerJournalTable (Получится лесенка LedgerJournalTable-->LedgerJournalTrans-->RContractTable), там же наложить условие на Posted=Yes. Возможно, бы работало ещё чуть быстрее. И тогда этот артефакт можно вообще убрать
X++:
if (qLedgerTrans.ledgerJournalTable().posted)