![]() |
#6 |
Участник
|
Цитата:
Сообщение от mazzy
![]() попробую произнести на русском языке то, что вы написали
================ для каждой записи из 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-сервер один раз обрабатывает этот более сложный запрос вместо кучи маленьких. далее мы от него получаем результаты один раз, а не внутри цикла. накладных расходов меньше. profit. будьте внимательны с not exists join в Аксапте (поищите на форуме, обсуждалось) ![]() |
|