Thema: Delphi ADO Langsamer als BDE?

Einzelnen Beitrag anzeigen

hoika

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

Re: ADO Langsamer als BDE?

  Alt 18. Jun 2009, 10:24
Hallo,

Zitat:
Jetzt habe ich im ersten Schritt einfach die Table auf den neuen Server gelenkt, indem ich unter ODBC eine Verbindung mit dem SQL Native Client eingerichtet habe.
So einfach ist es nicht.
Du bist von Paradox auf SQL-Server umgestiegen.
Das ist ein Riesenunterschied.

Was du mit dem ODBC willst, weiss ich nicht.
Lass das ODBC weg.

SQL-Server -> ODBC -> ADO -> TAdoTable

Einfach TTable durch TAdoTable zu ersetzen, reicht nicht aus.
Eine AdoTable versucht ja, das TTable komplett zu ersetzen.
Dazu gehören Infos wie Felder, Indizes (IndexDefs) usw..
Das ist zwar schön, aber ein grosser Overhead.
Nutzung der AdoTable nur bei kleinen Tabellen
und auch während des Umstiegs von Pdx.
Später sollte das ersetzt werden.

Das muss ein AdoTable beim Open erst mal alle Tabellen-Infos vom Server holen,
es werden dazu mehrere Queries verwendet.
Unter Pdx standen die Infos direkt im Header der Tabelle,
standen nach dem Open also direkt zur Verfügung.

Ausserdem wird ein Select * From Table ausgeführt,
egal was du mit der Tabelle vorhast.
Das ist dann meistens auch das Performance-Problem.

Lege mal eine leere Tabelle auf dem Server an,
und öffne die. Das sollte schneller gehen als eine volle Tabelle.


Fazit:
Nutze TAdoQuery, besser aber TAdoDataSet.
Das heisst aber leider auch "ein bisschen" Neuprogrammierung.

Meistens sind TTable unter Pdx schneller,
TQuery/TAdoDataSet unter SQL-Server.

Und bevor jemand meckert, ich sagte "meistens"


BTW:
Ich habe eine grosse Anwendung von Pdx auf Firebird umgestellt,
und weiss über Performance-Probleme leider nur allzu gut Bescheid.



Heiko
Heiko
  Mit Zitat antworten Zitat