![]() |
Datenbank: MSSQL • Version: 2000 • Zugriff über: ADO / Transact SQL
Komplexe Abfrage an MSSQL:Dauert ewig über ADO, wieso?
Folgende Anomalie:
Eine komplexe Summierungsabfrage dauert mal 90 Sekunden, mal 7 Minuten, und zwar: Eingetippt in Query Analyzer (TSQL.EXE) ca. 90 Sekunden Ausgeführt über TADOQuery unter Delphi: 7 Minuten. :shock: (Eine Form, ein TADOQuery, ein ShowMessage). Wiederholbar. Beides läuft auf dem gleichen Rechner. Beide Verbindungen über den Rechnernamen. Hä? |
Re: Komplexe Abfrage an MSSQL:Dauert ewig über ADO, wieso?
Wie wärs denn mal mit dem SQL-Statement, Tabellenstruktur, Volumen, Testdaten...
|
Re: Komplexe Abfrage an MSSQL:Dauert ewig über ADO, wieso?
Wie hast du den das Property "CursorLocation" eingestellt?
|
Re: Komplexe Abfrage an MSSQL:Dauert ewig über ADO, wieso?
Danke für die Antworten.
@Union: Es hat imho gar nix mit der Tabellenstruktur etc. zu tun, da ein und die selbe Abfrage aus TSQL 5x schneller ist, als mit ADO. Es ist einfach eine Tabelle, die über den Clustered Index (Datum) innerhalb eines Zeitraumes von einem Jahr mit ca. 1.000.000 kummuliert wird. Eine Jahresauswertung eben. Gruppiert wird über eine Spalte. @dfried: Ich schau mal..warte... clUseClient. Ok, langsam: Einfach TADOConnection nehmen, auf Form schmeissen. OLEDB-Provider für SQL-Server auswählen. Pronto. An der Connection habe ich sonst Nichts geändert. Im Allgemeinen fällt diese Performancediskrepanz nicht auf oder ist nicht vorhanden... Es ist ja egal, obs 100 oder 500ms dauert: Schwupps = Schwupps. Aber hier... Wie gesagt, die Tabelle ist nach Summierung ca. 100-200 Zeilen lang, mit ca. 20 Integer-Spalten. Also nix Großes. Mir ist das ein Rätsel. Wenn das kein bekanntes Problem ist, habe ich eins. :( |
Re: Komplexe Abfrage an MSSQL:Dauert ewig über ADO, wieso?
Zitat:
|
Re: Komplexe Abfrage an MSSQL:Dauert ewig über ADO, wieso?
Zitat:
Ich vermute eher das der Server an den Leistungsgrenzen läuft und vermutlich 1-2 Speicherriegel u.U. gewaltige Performancezuwäche bringen würde. Hast Du schon mal auf dem Server überprüft ob der Serverprozess auch wirklich 100% CPU-Zeit benötigt oder es so scheint als macht die CPU gerade Brotzeit. Das wäre nämlich ein Indiz das u.U. nicht alle benötigten Indeze auch wirklich 100%ig im Speicher gehalten werden und teilweise Festplattenzugriffe benötigen. Auch las mal den Queryanalyzer einen Abfrageplan erstellen ob wirklich alle Teile der Abfrage Indexe verwenden können. Zitat:
|
Re: Komplexe Abfrage an MSSQL:Dauert ewig über ADO, wieso?
Welchen OLE DB Treiber setzt Du ein: MSDASQL oder SQLOLEDB? Der zweiter ist wesentlich performanter.
|
Re: Komplexe Abfrage an MSSQL:Dauert ewig über ADO, wieso?
Zitat:
|
Re: Komplexe Abfrage an MSSQL:Dauert ewig über ADO, wieso?
Zitat:
|
Re: Komplexe Abfrage an MSSQL:Dauert ewig über ADO, wieso?
Moin,
Das geht ja richtig ab hier! Danke für die vielen Tipps. @Berhard Geyer: Der Server ist ein Compaq Dual Xeon (Hyperthreading) mit GB-weise Ram, ziemlich neu. Die CPU-Auslastung beträgt natürlich knappe 100%. Bei einer der 4 CPU's. Aber 100%ig sicher bin ich natürlich nicht, das die Abfrage IMMER schneller über TSQL ist. Aber 3x direkt verglichen: TSQL geöffnet, Test.EXE geöffnet. isqlw.exe gestartet => ca. 90sec, dann Test.EXE => 360 sec. Das ganze drei mal hintereinander. Jedesmal. Dann die Bestätigung des Kunden (die 6-7 minuten per ADO). Die restlichen Tipps (Speicher, Abfrageplan) dürfte nichts bringen, weil es ja kein grundlegendes Problem einer suboptimalen DB/Index-Struktur ist, sonder imho eher ein Treiberproblem oder was-weiss-ich. Interessant: Auf unserem Netz sind die Ausführungszeiten identisch (so wie man das erwartet), auf der Kundenseite hingegen nicht. Also irgendwie ein Netzwerkproblem. Das liieebe ich. Hab nämlich keinen Blassen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz