![]() |
#12 |
Участник
|
Перепроверил - получилось, спасибо. Обидно, правда, что куча времени теряется на внутренний select:
X++: table1 = Table1::findRec(table1Loop.RecId, true); Подумалось, может быть сделать что-то вроде следующего: X++: Table1 table1; int bulk = 5000; // 5; RecId lastRecId; int i; ; do { i = 0; ttsbegin; while select forupdate table1 order by RecId where table1.RecId > lastRecId { table1.Field1 = strfmt("Blah %1", i); table1.doupdate(); lastRecId = table1.RecId; i++; if (i >= bulk) break; } ttscommit; } while (i >= bulk); Выглядит оптимальным решением, нет? Правда, работать будет быстро только при наличии уникально индекса по одному полю. Сейчас попробую. Последний раз редактировалось Hyper; 05.04.2011 в 20:05. |
|