Цитата:
Сообщение от
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;