![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите, как ускорить следующую операцию. Копирую изтаблицы
Георгинчик © (2002-05-02 14:02:00)АА в таблицу ZZ все поля при этом меняю тип одного поля со строкового на Real. В таблице порядка 40 000 - 60 000 записей. Обработка выглядит так:
aa.Active := True;
zz.Active := True;
aa.Append;
zz.Append;
aa.Edit;
aa.First;
zz.Insert;
while not aa.Eof do
begin
zz.FieldValues["PHONE"] := aa.FieldValues["PHONE"];
zz.FieldValues["CALL_DATE"] := aa.FieldValues["CALL_DATE"];
...
zz.FieldValues["SUMMA"]:=strtofloat(aa.FieldValues["SUMMA"]);
aa.Next;
zz.Next;
end;
aa.Edit;
zz.Post;
Работает очень долго, можно ли ускорить? Спасибо!
suds (2002-05-02 19:53:00) [1]Согласен с Ura....
А еще, если не юзаешь SQL, можно пользовать insertrecord
Работает быстрее.... проверено
Ura (2002-05-02 14:40:00) [2]1. Попробуй сделать кеширование - если много памяти. И в конце только применить.
2. Не открывай ZZ а напиши хранимую процедуру на вставку в ZZ.
3. Раздели aa на несколько частей и запускай их паралельно - если выдержит сервер лавины запросов.
4. Проверь может в ZZ есть индексы - так вот надо отключить, а потом пересоздать.
DPetrovich (2002-05-02 14:37:00) [3]Сделать запрос на выполнение
insert into ZZ
select
... ,
SUMMA=convert(float, SUMMA) -- или аналог для вашей СУБД
, ...
from AA