Вниз
Скачать: CL | DM;

SQLite + FireDAC   Найти похожие ветки 

← →
FMX   (2014-03-10 16:20) [0]

Нужно пробежать таблицу из 100 000 записей.

Делаю так:


procedure TForm1.ShowAllRecordsClick(Sender: TObject);
var
 TableItem: TADTable;
 I: Integer;
 FieldID, FieldName: TField;
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
     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
     ListBox1.EndUpdate;
   end;
 finally
   TableItem.Free;
 end;
end;


Практически мгновенно пробегаются первые 8 000 записей, затем пробег резко замедляется и дальше перебирает еле-еле. Почему так происходит? Как ускорить перебор?


← →
Inovet ©   (2014-03-10 16:45) [1]

Ты все 100500 тыщ в ЛистБокс впихиваешь? Выход один - дождаться выпуска новых 100500 ядерных процессоров со 100500 гигами памяти на каждом, и новой ОС с новым ЛистБоксом под них. Впрочем, есть ещё варианты.


← →
Inovet ©   (2014-03-10 16:47) [2]

Кстати, Скайп, которым теперь МС занимается, как раз так и делает и как раз из SQLite. Так что ждём-с.


← →
sniknik ©   (2014-03-11 07:57) [3]

DisableControls
+
вот это - TableItem.RecordCount вынести за цикл... нафига дергать метод объекта каждый раз кто знает что в нем "лишнего" делается...



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.038 c
15-1420234204
Юрий
2015-01-03 00:30
2015.09.10
С днем рождения ! 3 января 2015 суббота


6-1275567216
Eraser
2010-06-03 16:13
2015.09.10
Высоконагруженный TCP сервер


2-1395731174
Сергей
2014-03-25 11:06
2015.09.10
Определить тип данных


15-1420134946
ProgRAMmer Dimonych
2015-01-01 20:55
2015.09.10
Где взять MSDN Library за август 2006?


1-1331451118
renok
2012-03-11 11:31
2015.09.10
Сериализация PageControl а




   Наверх