Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TIBDataSet - Performance (https://www.delphipraxis.net/97299-tibdataset-performance.html)

mkinzler 8. Aug 2007 12:05

Re: TIBDataSet - Performance
 
das Problem ist das die Automatik dies nicht so erzeugt

Hansa 8. Aug 2007 12:14

Re: TIBDataSet - Performance
 
Du glaubst doch wohl nicht, dass ich das von Hand erzeugt habe ? :shock: Wer das in seinem Source sucht, wird in *.PAS nichts finden. Gespeichert wird das vom SQL-Generator in der DFM.

ahlzeitT :P

Nico80 9. Aug 2007 13:27

Re: TIBDataSet - Performance
 
Also wenn ich das richtig verstanden habe mache ich das mit prepared Statements wie folgt:

Delphi-Quellcode:
if not DataSet.Prepared then
  DataSet.Close,
  DataSet.SelectSQL := 'Select * from Tabelle where id=:Param';
  DataSet.Prepare;
end;

for i:= 0 to Count-1 do begin
  DataSet.Close;
  DataSet.ParamByValue('Param') := i;
  DataSet.Open;
 ...
end;
Das läuft auch viel schneller.
Wie mach ich das denn, wenn ich in der WHERE-Klausel unterschiedliche Parameter habe (auch Anzahl verschieden)?

Hansa 9. Aug 2007 17:47

Re: TIBDataSet - Performance
 
Zitat:

Zitat von Nico80
Also wenn ich das richtig verstanden habe mache ich das mit prepared Statements wie folgt:

Delphi-Quellcode:
if not DataSet.Prepared then
  DataSet.Close,
  DataSet.SelectSQL := 'Select * from Tabelle where id=:Param';
  DataSet.Prepare;
end;

Das ist halbrichtig, aber nicht ganz. :-D Grundlegende Vorgehensweise würde so aussehen :

Delphi-Quellcode:
  DataSet.Close,
  DataSet.SelectSQL := 'Select * from Tabelle where id=:Param';
  DataSet.ParamByName ('Param').AsString := edXY.Text; // sofern überhaupt Text für das Feld richtig
  DataSet.Open; // die Datenmenge steht nun zur Verfügung für Next, Prior, EOF usw.
"Prepared" ?? Wo soll da ein Vorteil liegen. Habe das noch nie gebraucht.

Zitat:

Zitat von Nico80
Wie mach ich das denn, wenn ich in der WHERE-Klausel unterschiedliche Parameter habe (auch Anzahl verschieden)?

Oben das (sowieso falsche SelectSQL umbauen. Da fehlt das .Text). Mit Close und Open das neu laufen lassen, Parameter anpassen usw. Wirds noch komplizierter, dann den einfacheren Weg über eine stored Procedure wählen.

Nico80 10. Aug 2007 08:48

Re: TIBDataSet - Performance
 
Zitat:

"Prepared" ?? Wo soll da ein Vorteil liegen. Habe das noch nie gebraucht.
Wenn du die gleiche Abfrage mehrmals nacheinander (z.b bei 1000 Datensätze) tätigst,
bringt das eine enorme Performancesteigerung im Sekundenbereich, da die Abfrage nicht jedesmal "vorbereitet" werden muss.

hoika 10. Aug 2007 09:09

Re: TIBDataSet - Performance
 
Hallo,

in der Regel halbiert sich die Ausführungszeit,
kommt aber auch immer darauf an, was gemacht wird,
also wie sehr das Netz belastet ist.

Sollte nicht auf FB2 ein Ausführungs-Cache
mit dabei sein, der das Preparen erübrigt?

Heiko

Hansa 10. Aug 2007 10:24

Re: TIBDataSet - Performance
 
Zitat:

Zitat von hoika
in der Regel halbiert sich die Ausführungszeit,..

Glaub ich nicht. Siehe auch hier :

http://entwickler-forum.de/showthread.php?t=19040

Sieht so aus, als könnten sogar die Nachteile überwiegen.

mkinzler 10. Aug 2007 10:28

Re: TIBDataSet - Performance
 
Nur weeil die BDE Sch... baut ist das doch kein Grund das mit anderen Komponenten zu verwenden.

Bernhard Geyer 10. Aug 2007 11:22

Re: TIBDataSet - Performance
 
Zitat:

Zitat von Hansa
Glaub ich nicht. Siehe auch hier :

http://entwickler-forum.de/showthread.php?t=19040

Sieht so aus, als könnten sogar die Nachteile überwiegen.

Bei Verwendung bei MySQL, Oracle und MySQL kann ich nur von sehr schönen Performance-Schub sprechen. Doppel so schnell i.d.R. zwar nicht aber mehr als merklich. Und BDE hab wir schon seit einiger Zeit nicht mehr aktiv im Einsatz.

Hansa 10. Aug 2007 14:19

Re: TIBDataSet - Performance
 
Zitat:

Zitat von Bernhard Geyer
Bei Verwendung bei MySQL, Oracle und MySQL kann ich nur von sehr schönen Performance-Schub sprechen...

Sind das vielleicht die falschen DBs, also die, die man besser nicht verwendet ? 2-mal MySQL braucht sowieso keiner. :mrgreen:

Muss sowieso noch einige Tables füllen und werde dafür prepare mal mitverwenden. Nur : wo soll das genau hin ? Vor das Open oder wohin ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:54 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz