попробую произнести на русском языке то, что вы написали
================
для каждой записи из buildTable
выбрать ВСЕ (!) записи из buildParam // в результате buildParm полностью перебирается столько раз сколько записей в buildTable
если нет записи в paramValue для комбинации buildTable, buildParam
то добавить в paramValue
================
во-первых, вы точно хотели выбирать ВСЕ возможные комбинации из buildTable, buildParam?
может эта пара у вас как-то связана?
во-вторых, у вас делается куча вложенных маленьких запросов внутри цикла.
по сути дела SQL-сервер захлебывается (ddos'ится).
попробуйте объединить запросы в один.
если логика правильна, то примерно так:
X++:
ttsbegin;
while select BuildCode from buildTable
join buildParam
not exists join ParamCode from paramValue where paramValue.BuildCode == buildTable.BuildCode
&& paramValue.ParamCode == buildParam.ParamCode;
{
paramValue.BuildCode = buildTable.BuildCode;
paramValue.ParamCode = buildParam.ParamCode;
paramValue.insert();
}
ttscommit;
обратите внимание, что в этом случае запрос на SQL-сервер посылается один раз.
SQL-сервер один раз обрабатывает этот более сложный запрос вместо кучи маленьких.
далее мы от него получаем результаты один раз, а не внутри цикла.
накладных расходов меньше. profit.
будьте внимательны с not exists join в Аксапте (поищите на форуме, обсуждалось)