Показать сообщение отдельно
Старый 12.04.2006, 06:25   #15  
Алексей Контев is offline
Алексей Контев
Участник
 
118 / 31 (2) +++
Регистрация: 28.12.2001
Адрес: Барнаул
Еще раз о скорости обработки с/ф
При обработке с/ф по накладной очень долго вызывается форма "Обработка счета-фактуры".
При анализе выяснилось, что максимальная задержка в методе
FactureEditLinesEngineVend_RU\dsExecuteMarkup
Там стоит такой загадочный код:
Код:
    select markupCursor
        where   markupCursor.CustVendPosted_RU                         &&
                  ! markupCursor.ItemPosted_RU
    exists join tTrans
        where (markupCursor.TransTableId  == tTrans.TableId            &&
                  markupCursor.TransRecId    == tTrans.RecId              &&
                  tTrans.PurchID             == tJour.PurchId             &&
               tTrans.InvoiceId           == tJour.InvoiceId           &&
               tTrans.InvoiceDate         == tJour.InvoiceDate         &&
               tTrans.NumberSequenceGroup == tJour.NumberSequenceGroup &&
               tTrans.InternalInvoiceId   == tJour.InternalInvoiceId
              )              ||
              (
               markupCursor.TransTableId  == tJour.TableId             &&
               markupCursor.TransRecId    == tJour.RecId
              );
После изменеия его на
Код:
    select markupCursor index TableRecIdIdx
        where   markupCursor.CustVendPosted_RU                         &&
              ! markupCursor.ItemPosted_RU                             &&
               markupCursor.TransTableId  == tJour.TableId             &&
               markupCursor.TransRecId    == tJour.RecId;

    if (!markupCursor)
        select markupCursor
            where   markupCursor.CustVendPosted_RU                         &&
                  ! markupCursor.ItemPosted_RU
        exists join tTrans index InvoiceIdx
            where
                   markupCursor.TransTableId  == tTrans.TableId            &&
                   markupCursor.TransRecId    == tTrans.RecId              &&
                   tTrans.PurchID             == tJour.PurchId             &&
                   tTrans.InvoiceId           == tJour.InvoiceId           &&
                   tTrans.InvoiceDate         == tJour.InvoiceDate         &&
                   tTrans.NumberSequenceGroup == tJour.NumberSequenceGroup &&
                   tTrans.InternalInvoiceId   == tJour.InternalInvoiceId;
форма вызывается на порядок быстрее.
Т.к. я не проограммист, у меня вопрос - одинаковый результат у этих запросов, или я в чем -то ошибся.
Спасибо.