Наблюдаю жесточайшие тормоза при переборе SQLite-таблицы на 100 000 записей.
Алгоритм перебора:
procedure TForm1.btn_ShowAllRecordsClick(Sender: TObject);
var
FieldID, FieldName: TField;
I: Integer;
TableItem: TADTable;
begin
TableItem := TADTable.Create(nil);
try
TableItem.Connection := ADConnection1;
TableItem.Open('item');
FieldID := TableItem.FieldByName('id');
FieldName := TableItem.FieldByName('name');
TableItem.First;
I := 1;
ListBox1.BeginUpdate;
try
TableItem.DisableControls;
try
while not TableItem.Eof do
begin
if I mod 250 = 0 then
Caption := Format('%d of %d', [I, TableItem.RecordCount]);
ListBox1.Items.Add(Format('id: %d; name: %s', [FieldId.AsInteger, FieldName.AsString]));
TableItem.Next;
Inc(I);
end;
finally
TableItem.EnableControls;
end;
finally
ListBox1.EndUpdate;
end;
finally
TableItem.Free;
end;
end;
Первые 7 000 записей перебираются мгновенно. После перебор резко замедляется и дальше выполняется еле-еле. 100 000 записей перебирает около 30 минут. В чем может быть проблема?