Schnellere Datenbankschleifen in Delphi

Möglicherweise arbeiten Sie bei Ihrer Datenbankbearbeitung häufig mit vergleichbaren Schleifen:

while not query1.eof do begin
label1.caption:=query1.fieldbyname(‘Feld1’).asString;
label2.caption:=query1.fieldbyname(‘Feld2’).asString;
label3.caption:=query1.fieldbyname(‘Feld3’).asString;
label4.caption:=query1.fieldbyname(‘Feld4’).asString;
// eventuell diverser anderer Code
query1.next;
end;

Fieldbyname verwenden Sie dazu, um Werte aus der Datenbank (bzw. aus der Abfragemenge) auszulesen oder eventuell auch in die Datenbank zu schreiben.

Um diese Schleifen zu optimieren, können Sie einige Tipps verfolgen.

Zum einem sollte natürlich generell so wenig Anweisungen wie möglich in Schleifen abgearbeitet werden, zum anderen ist es wichtig zu sehen, was Fieldbyname eigentlich macht. Fieldbyname holt sich die Feldinformationen für das jeweils angegebene Feld und gibt die entsprechende TField Komponente zurück, die dieses Feld repräsentiert. Dazu sucht Fieldbyname nach dem entsprechenden Feld (letztlich ein Aufruf von FindField), was in einer Schleife dazu führt, dass immer und immer wieder diese Suche ausgeführt wird, was natürlich Zeit kostet. Wie viel Zeit ist dabei natürlich abhängig von der Anzahl der Schleifen, die abgearbeitet werden müssen. Ist zu erwarten, dass nur wenige Schleifen durchlaufen werden müssen, kann man es so belassen.

Der Vorteil der obigen Vorgehensweise liegt auf der Hand: Es ist einfach, es ist klar und der Zeitaufwand für den, der diesen Code schreiben muss, ist überschaubar. Klarer Nachteil ist der Performanceverlust, da jedes Mal nach dem gleichen Feld gesucht werden muss, was letztlich nicht sehr intelligent ist, auf jeden Fall nicht sehr effektiv.

Bei sehr vielen Daten sollte man überlegen, wie man vorgeht, um die Sache zu beschleunigen.

Ein Weg könnte so aussehen:

Var
Feld1, Feld2, Feld3 : TField;
begin
Feld1 := query1.fieldbyname(‘feld1’);
Feld2 := query1.fieldbyname(‘feld2’);
Feld3 := query1.fieldbyname(‘feld3’);
while not query1.eof do
begin
label1.caption:=Feld1.asString;
label2.caption:=Feld2.asString;
label3.caption:=Feld3.asString;
query1.next;
end;
end;

Ein Nachteil dieses Verfahrens ist natürlich ganz klar: Man muss mehr Code schreiben, Vorteil ist aber, dass nicht mehr in jeder Schleifenausführung wieder und wieder nach dem entsprechenden Feld gesucht werden, da eine entsprechende Referenz durch die lokale Variable bereits gesetzt ist. Dies beschleunigt bei sehr vielen Schleifenabläufen durchaus messbar.

Nun müssen Sie natürlich nicht den ganzen Code in Ihren Programmen umschreiben, aber bei zeitkritischen Abfragen lohnt sich eine Überarbeitung bzw. eine Überprüfung, ob man da nicht ein paar Sekunden herausholen kann.

Werbung

Aktuelle Top Aktionen bei Acer, HP, Lenovo, Bitdefender & Co

Angebote bei Acer
Acer Gaming Week: Bis zu 15% Rabatt auf Acer Gaming Notebooks, PCs und Zubehör bis 21. August 2018


Angebote bei HP
» HP Back To School 2018: Viele HP Notebooks, Convertibles und Drucker im Angebot
» HP 10% Gutschein für All-in-One PCs:10% Rabatt mit HP Gutschein HPTD1XA818 die HP All-in-One PCs im HP Store in dieser Liste


Angebote bei Lenovo
» Lenovo Top Wochenangebote: Heiße ThinkPad und IdeaPad Wochenangebote mit großer Auswahl und dicken Rabatten


Weitere Möglichkeiten
» Top bei Otto: Sehr gute HP Notebook Angebote, teils mit Extras wie 4 Jahre Garantie und mehr
» Mehr Aktionen in der Übersicht: Aktuelle HP Angebote und mehr auf einem Blick


Aktuelle Bitdefender Aktionen:
» Top Angebot: Bitdefender "The Darkest Minds Promotion" mit kostenlosem Gewinnspiel und Angebot Total Security 2019 MultiDevice nur 39,99€ statt 79,99 Euro (50% Rabatt)
» Bitdefender Sommer-Aktion Version 2019 mit 25% auf Bitdefender Antivirus Plus 2019 (3 Geräte und 1 Jahr), 42% auf Bitdefender Internet Security 2019 (3 Geräte und 1 Jahr) und 50% auf Bitdefender Total Security Multi Device 2019 (5 Geräte und 1 Jahr)
» Bitdefender +1 Jahr dazu-Aktion
» Top für neue PCs! Bitdefender AntiVirus Plus Lebenslang Edition: 5 Jahre Schutz für nur für nur 89,95
Weitere aktuelle Bitdefender Angebote » Alle Bitdefender Angebote auf einem Blick

Werbung
www.unitymedia.de

Verwandte Themen:


Sorry! Unser Kommentarfunktion ist vorübergehend geschlossen.