Thema: Delphi Performance verbessern

Einzelnen Beitrag anzeigen

Luncustaf

Registriert seit: 31. Jan 2003
80 Beiträge
 
Delphi 6 Enterprise
 
#15

Re: Performance verbessern

  Alt 10. Dez 2006, 17:34
hi,

habe nicht die tabellen sondern nur die werte dieser in einer txt und ini datei abgelegt in der hoffnung das es dadurch schneller geht.
momentan sieht meine abfrage so aus.

Delphi-Quellcode:
tv_rezept.Items.BeginUpdate;
try
  frm_laden.Show;
  frm_laden.Label1.Caption := 'Lade Datenbank';
  Application.ProcessMessages;
  for i := 0 to namen.Count -1 do
  begin
     sqlqrez.Active := False;
     sqlqrez.SQL.Clear;
     sqlqrez.SQL.Add('SELECT Count(name) FROM rezepte WHERE kategorie in ("'+namen.Strings[i]+'")');
     sqlqrez.Active := True;
     with tv_rezept.Items do
     begin
       t := AddChild(nil,namen.Strings[i] + ' ('+sqlqrez.fieldbyname('Count(name)').AsString+')');
     end;
     for a := 0 to 8 do
     begin
       if not (ini.ReadString(namen.Strings[i],'unter'+IntToStr(a),'') = '') then
       begin
         unterkat.Add(ini.ReadString(namen.Strings[i],'unter'+IntToStr(a),''));
       end;
     end;//for a :=
     for a := 0 to unterkat.Count -1 do
     begin
         sqlqrez.Active := False;
         sqlqrez.SQL.Clear;
         sqlqrez.SQL.Add('SELECT Count(name) FROM rezepte WHERE unterkat in ("'+unterkat.Strings[a]+'") AND kategorie in ("'+namen.Strings[i]+'") GROUP BY unterkat');
         sqlqrez.Active := True;
         tv_rezept.Items.AddChild(t,unterkat.Strings[a]+ ' (' + sqlqrez.fieldbyname('Count(name)').AsString +')' );
         sqlqrez.Active := False;
     end;//for a
     unterkat.Clear;
     frm_laden.progress.StepBy(10);
  end;//for i
finally
  tv_rezept.Items.EndUpdate;
  frm_laden.Close;
end;
wie oben beschrieben ist das problem das es ziemlich lange braucht alle daten zu laden die aich abfrage.

gruß
  Mit Zitat antworten Zitat