Delphi-PRAXiS
Seite 1 von 3  1 23   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADO langsam :-( (https://www.delphipraxis.net/192080-ado-langsam.html)

haentschman 18. Mär 2017 14:10

Datenbank: MSSQL • Version: 2012 • Zugriff über: ADO

ADO langsam :-(
 
Hallöle... :P

Ich bin am Verzweifeln... :?

Ich muß 50000 Datensätze in eine generische Liste laden. Soweit so gut... Das SQL holt die Daten über eine Query ab. Das dauert max. eine Sekunde.
Und jetzt kommts... Die Schleife bis EOF dauert 25 Sekunden. :shock: ...auch wenn ich die Schleife nackig ohne Inhalt laufen lasse. :shock:
Delphi-Quellcode:
while not Query.Eof do
begin
  Blubb := TBlubb.Create;
  Blubb.Caption := DataSet.FieldByName('Bla').AsString;
  List.Add(Blubb);
end; // ca. 25 Sekunden
Die Query wird immer neu erzeugt. Es sind keine Events eingehängt. An welcher Schraube muß ich drehen das der Durchlauf besser wird?
Als Vergleich: Mit NEXUS passiert das nicht. Da ist die Schleife in ca. 2 Sekunden durch.

Das hat nichts mit der DB als solches zu tun... sondern mit ADO. Ich weiß schon warum ich die hasse...:evil:

Danke.

p80286 18. Mär 2017 14:19

AW: ADO langsam :-(
 
Vor langer,langer Zeit hat Gerhard etwas dazu geschrieben, ich hab die Details leider nich mehr im Kopf, unter der Delphi Schicht gibt es so etwas ähnliches wie resultrecords, die sind sauschnell.

Gruß
K-H

haentschman 18. Mär 2017 14:28

AW: ADO langsam :-(
 
Danke...

Die Query stammt aber aus einer Abstraktionsschicht für verschiedene DBMS. Da komme ich nicht dran... :? Ich habe nur die TDataSet Methoden verfügbar.

LÖSUNG:
TDataSet.DisableControls :gruebel: Obwohl keine Controls oder Events dranhängen ist es nun mit einer Sekunde deutlich schneller. :thumb: Ohne Worte...:?

Again what learned...:stupid:

mensch72 18. Mär 2017 15:00

AW: ADO langsam :-(
 
noch schneller wird es, wenn du nicht bei jedem Schleifendurchlauf fas Feld über den Feldnamen "suchst"..

also besser vor der Schleife
field : TField;
field := DataSet.FieldByName('Bla');

in der Schleife:
Blubb.Caption := field.AsString;

p80286 18. Mär 2017 15:54

AW: ADO langsam :-(
 
Zitat:

Zitat von haentschman (Beitrag 1364646)
LÖSUNG:
TDataSet.DisableControls :gruebel: Obwohl keine Controls oder Events dranhängen ist es nun mit einer Sekunde deutlich schneller. :thumb: Ohne Worte...:?

Again what learned...:stupid:

Kein DBGrid oder ähnliches??
Gruß
K-H

haentschman 18. Mär 2017 16:01

AW: ADO langsam :-(
 
:P
Zitat:

Kein DBGrid oder ähnliches??
...nö. :wink: Nackige Datenbankabfrage und packen in eine Liste. Da müssen trotzdem irgendwelche Eventorgien ablaufen. :?

Uwe Raabe 18. Mär 2017 16:08

AW: ADO langsam :-(
 
Zitat:

Zitat von mensch72 (Beitrag 1364650)
noch schneller wird es, wenn du nicht bei jedem Schleifendurchlauf fas Feld über den Feldnamen "suchst"..

Seitdem TDataSet die Zuordnung Feldname/Feld in einem TDirctionary vorhält, ist der dadurch erreichte Vorteil nicht mehr so groß wie er früher mal war.

p80286 18. Mär 2017 16:12

AW: ADO langsam :-(
 
Zitat:

Zitat von haentschman (Beitrag 1364657)
:P
Zitat:

Kein DBGrid oder ähnliches??
...nö. :wink: Nackige Datenbankabfrage und packen in eine Liste. Da müssen trotzdem irgendwelche Eventorgien ablaufen. :?

:gruebel: Mal sehen ob ich nächste Woche etwas Zeit finde.
Ein gewisser Vista-Fan wird zwar sagen, das ist ein toter Gaul:wink:, aber vielleicht macht es den einen oder anderen glücklich.

Welche DB und welcher Provider? Vielleicht sitzt da der Schmutzfink.

Gruß
K-H

haentschman 18. Mär 2017 16:24

AW: ADO langsam :-(
 
:P
Zitat:

Welche DB und welcher Provider? Vielleicht sitzt da der Schmutzfink.
...falsch. :wink: (MSSQL 2012, ADO)
siehe:
Zitat:

Das SQL holt die Daten über eine Query ab. Das dauert max. eine Sekunde.
... das ist in Ordnung. :wink:
Zitat:

Die Schleife bis EOF dauert 25 Sekunden. ...auch wenn ich die Schleife nackig ohne Inhalt laufen lasse
... das nicht. :evil:
Zitat:

das ist ein toter Gaul
...ich habe mir die ADO nicht ausgesucht. :cry:
Zitat:

Mal sehen ob ich nächste Woche etwas Zeit finde.
...für mich brauchtst du keine Zeit mehr investieren. Ich habe fertig... :thumb:

Aviator 18. Mär 2017 19:30

AW: ADO langsam :-(
 
Zitat:

Zitat von haentschman (Beitrag 1364661)
Zitat:

das ist ein toter Gaul
...ich habe mir die ADO nicht ausgesucht. :cry:

Was würdet ihr denn in Verbindung mit MSSQL empfehlen? Also was die Standardkomponenten angeht die bei Delphi 10.1 Berlin dabei sind?!


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 Uhr.
Seite 1 von 3  1 23   

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