AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi TIBDataSet - Performance
Thema durchsuchen
Ansicht
Themen-Optionen

TIBDataSet - Performance

Ein Thema von Nico80 · begonnen am 8. Aug 2007 · letzter Beitrag vom 12. Aug 2007
Antwort Antwort
Seite 2 von 4     12 34      
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: TIBDataSet - Performance

  Alt 8. Aug 2007, 13:05
das Problem ist das die Automatik dies nicht so erzeugt
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#12

Re: TIBDataSet - Performance

  Alt 8. Aug 2007, 13:14
Du glaubst doch wohl nicht, dass ich das von Hand erzeugt habe ? Wer das in seinem Source sucht, wird in *.PAS nichts finden. Gespeichert wird das vom SQL-Generator in der DFM.

ahlzeitT
Gruß
Hansa
  Mit Zitat antworten Zitat
Nico80

Registriert seit: 28. Jun 2007
63 Beiträge
 
Delphi 2006 Enterprise
 
#13

Re: TIBDataSet - Performance

  Alt 9. Aug 2007, 14:27
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)?
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#14

Re: TIBDataSet - Performance

  Alt 9. Aug 2007, 18:47
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. 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 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.
Gruß
Hansa
  Mit Zitat antworten Zitat
Nico80

Registriert seit: 28. Jun 2007
63 Beiträge
 
Delphi 2006 Enterprise
 
#15

Re: TIBDataSet - Performance

  Alt 10. Aug 2007, 09:48
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.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#16

Re: TIBDataSet - Performance

  Alt 10. Aug 2007, 10:09
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
Heiko
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#17

Re: TIBDataSet - Performance

  Alt 10. Aug 2007, 11:24
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.
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: TIBDataSet - Performance

  Alt 10. Aug 2007, 11:28
Nur weeil die BDE Sch... baut ist das doch kein Grund das mit anderen Komponenten zu verwenden.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#19

Re: TIBDataSet - Performance

  Alt 10. Aug 2007, 12:22
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#20

Re: TIBDataSet - Performance

  Alt 10. Aug 2007, 15:19
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.

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 ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:16 Uhr.
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