Хочу пользоваться вашими компонентами, но не во всем еще могу разобраться.
Подскажите, пожалуйста из-за чего может подвисать мое окно?
Происходит это так:
1) Каждые 2-3 секунды делаю INSERT примерно 100-300 записей.
2) Процессор работает на 90% процентов и окно не виснет. Скорость записи высокая.
3) Но после ~20.000 строк в базе загрузка процессора резко падает до обычной 10% и окно ни переместить толком ни закрыть нельзя и импорт данных становится раз в 100 медленней.
В общем программа едва подает признаки жизни. Записываю строки длиной 1000-2000 символов.
Не пинайте, пожалуйста сильно, подскажите как вообще в теории решается такая задача и правильно ли я делаю или проблема может быть в чем-то другом?
Код: Выделить всё
Form1.MyQuery1.SQL.Text := 'select * from rd';
Form1.MyQuery1.Open;
Form1.MyConnection1.StartTransaction;
try
for i1:=0 to ForInsertPrIndex-1 do
begin
Form1.MyQuery1.Insert;
Form1.MyQuery1.FieldByName('name_id').AsString:=ForInsertPrNAME[0,i1];
Form1.MyQuery1.FieldByName('limit_id').AsInteger:=strtoint(ForInsertPrNAME[1,i1]);
Form1.MyQuery1.FieldByName('number_id').AsInteger:=strtoint(ForInsertPrNAME[2,i1]);
Form1.MyQuery1.FieldByName('dateM_id').AsInteger:=strtoint(ForInsertPrNAME[3,i1]);
Form1.MyQuery1.FieldByName('dateG_id').AsInteger:=strtoint(ForInsertPrNAME[4,i1]);
Form1.MyQuery1.FieldByName('prM_id').AsString:=ForInsertPrMOG[i1];
Form1.MyQuery1.FieldByName('prS_id').AsString:=ForInsertPrSDELAL[i1];
Form1.MyQuery1.Post;
end;
Form1.MyConnection1.Commit;
Form1.MyQuery1.Close;
Except
Form1.MyConnection1.Rollback;
raise;
end;
Создаю таблицу
Код: Выделить всё
Form1.MyConnection1.ExecSQL('create table if not exists RD (name_id text(50) not null,'
+'limit_id integer not null,'
+'number_id integer not null,'
+'dateM_id integer not null,'
+'dateG_id integer not null,'
+'prM_id text,'
+'prS_id text, primary key(name_id(50), limit_id, number_id, dateM_id, dateG_id))',[]);
Я получаю строку из базы, разбиваю ее, раскидываю по массивам и работаю с этими значениями.
Дело в том, что мне если и нужна строка, то мне нужны все значения из нее.
Может все таки создать таблицу с большим количеством колонок?
... но мне все равно нужны будут значения из всех колонок.
Даже не знаю что делать