In einem aktuellen Programm von mir muss ich Datensätze aus einer Datenbank auslesen und in einem array of record speichern. Das funktioniert soweit auch schon ganz gut.
Sobald ich aber versuche ca. 100000 Datensätze einzulesen dauert das ganze, je nach Laune des Computers und laufenden Programmen, zwischen 4 und 8 Minuten!!!
Da das ganze beim Programmstart ausgeführt werden soll ist das untragbar, es sollte maximal 10-20 Sekunden dauern....
Hier einmal ein kleiner Beispielcode (Das Record ist eigentlich wesentlich umfangreicher):
Delphi-Quellcode:
// Record und Array of Record
TPerson =
packed record
nachname:
string[50];
end;
TPersonArray =
array of TPerson;
// Funktion
with query do
begin
with sql do
begin
clear;
add('
<SELECT Anweisung>');
end;
open;
first;
len:=RecordCount;
setLength(personenArray,len);
len:=0;
while len<RecordCount
do
begin
with personenArray[len]
do
begin
nachname:=Fields.Fields[0].AsString;
end;
next;
len:= len+1;
end;
end;
Vielleicht habt ihr ja eine Idee wie man das ganze schneller machen kann.
Gruß, Gushiken