![]() |
Datenbank: mysql • Version: 5.0 • Zugriff über: zeos
Performance verbessern
hi,
hab hier den code um für mein onlinekochbuch - die Anzahl der rezepte aus der datenbank zu lesen. zu beginn hab ich alles per zeos ausgelesen, nun bin ich soweit das ich die kategorie und die unterkategorie die sich nicht ändern lokal auf festplatte habe und nur noch die Anzahl der rezepte per zeos auslesen. ich habe mir dadurch eigentlich eine geschwindigkeitsverbesserung erhofft - hat aber leider nicht allzuviel gebracht, eigentlich gar nichts.
Delphi-Quellcode:
die inifile sieht so aus
i,a : integer;
namen : TStringList; ini : TIniFile; begin namen := TStringList.Create; ini := TIniFile.Create(extractfilepath(paramstr(0))+'unterkategorien.ini'); databasel; sqlq.Active := False; sqlq.SQL.Clear; sqlq.SQL.Add('SELECT name FROM kategorie'); sqlq.Active := True; sqlq.First; while not sqlq.Eof do begin namen.Add(sqlq.FieldByName('name').AsString); sqlq.Next; end;//sqlq.eof sqlq.Active := False; namen.SaveToFile(extractfilepath(paramstr(0))+'kategorie.txt'); 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="'+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 //ab hier geht denke ich die performance drauf begin if not (ini.ReadString(namen.Strings[i],'unter'+IntToStr(a),'') = '') then begin sqlqrez.Active := False; sqlqrez.SQL.Clear; sqlqrez.SQL.Add('SELECT Count(name) FROM rezepte WHERE unterkat="'+ini.ReadString(namen.Strings[i],'unter'+IntToStr(a),'')+'" AND kategorie="'+namen.Strings[i]+'"'); sqlqrez.Active := True; tv_rezept.Items.AddChild(t,ini.ReadString(namen.Strings[i],'unter'+IntToStr(a),'')+ ' (' + sqlqrez.fieldbyname('Count(name)').AsString +')' ); sqlqrez.Active := False; end;//if not ini.... end;//for a end;//for i
Delphi-Quellcode:
hmm ich weis nicht genau was ich noch daran verbessern könnte um die ganze sache zu beschleunigen so das man nicht ca ~20sek warten muss bis die anzahl aller rezepte ausgelesen und die TreeView aufgebaut ist.
[Eier- & Mehlspeisen]
unter0=Crêpes unter1=Deftiges & Delikates unter2=Omelettes unter3=Pfannkuchen unter4=Sonstiges [Auflauf & Co.] unter0=Sonstiges unter1=Gratins unter2=Aufläufe unter3=Soufflès usw... hat evtl jemand einen ansatz? mfg |
Re: Performance verbessern
Schonmal den Code mit
Delphi-Quellcode:
optimiert?
tv_rezept.Items.BeginUpdate
try ... finally tv_rezept.Items.EndUpdate; end; |
Re: Performance verbessern
hi,
wo genau muss ich das einbauen? bzw was bringt/bewirkt es? :) danke |
Re: Performance verbessern
Zitat:
Zitat:
|
Re: Performance verbessern
hmm ok,
hab ich eingebaut - bringt aber auch net wirklich was - also ich hab keine spürbare verbesserung gemerkt :( |
Re: Performance verbessern
Vielleicht dauern die SQL Abfragen einfach zu lange.
|
Re: Performance verbessern
hmm das hab ich mir auch schon gedacht - wüsste aber nicht wie ich die verbessern könnte :(
muss ich mir wohl anders helfen. falls evtl jemand nen vorschlag hat die SQL-Abfragen zu verbessern - bin für alles offen :) danke dennoch für deine schnelle Hilfe gruß |
Re: Performance verbessern
Ich würde keine lokale Speicherung verwenden, bringt imho keine Performancesteigerung, kompliziert die Sache nur.
Schon mal
SQL-Code:
versucht?
SELECT Count(name) FROM rezepte WHERE kategorie in ( ...)
|
Re: Performance verbessern
hi,
hab ich nun eingebaut - hmm kann nun nicht sagen ob es schneller geht oder nicht - die datenbank braucht trotzdem "lange" zum laden - ich habe esn un so gemacht das die db einmal am anfang des programms geladen wird. wäre natürlich trotzdem super wenn es noch ein bisschen schneller gehen würde ;) wer will kann es sich auch mal selber anschauen ![]() ![]() gruß |
Re: Performance verbessern
Wenn Du die beiden Abfragen als parametrisierte Abfragen auslegst und beim ersten mal preparste sollte einiges an Performancesteigerung drin sein.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz