![]() |
Datenbank: MSSQL • Version: 8 • Zugriff über: ADO
ADOQUERY mit Unterabfrage
Hallo habe ein Problem mit einer Abfrage über ADOQUERY
SELECT * FROM DOKPos WHERE (POS_NR IN (SELECT POS_NR FROM Rueckstand_Auftraege WHERE (offeneAUFSTK > 0) AND (Nummernkreis =: P_nummernkreis))) ORDER BY Zeile die Abfrage dauert extrem lange (mehrere Minuten) und läuft immer in ein Timeout. rufe ich die Abfrage in MSSQL Studio auf dauert das nicht mal eine Sekunde. hat jemand einen Tipp wie ich das in Delphi 7 besser lösen könnte. danke |
AW: ADOQUERY mit Unterabfrage
Schon mal mit einem Join versucht?
|
AW: ADOQUERY mit Unterabfrage
oder eine gespeicherte Prozedur mit Parameter
|
AW: ADOQUERY mit Unterabfrage
Das löst doch nicht das Problem, das die Query im Studio in einer Sekunde läuft und auf dem Client ne Minute oder länger braucht. Der Server optimiert das eh so, da der Plan der gleiche ist.
Ich glaube, deine Namensauflösung hat ne Macke. Versuch mal, dich mit dem Server über die IP zu verbinden. |
AW: ADOQUERY mit Unterabfrage
Zitat:
SELECT DOKPos.*,Rueckstand_Auftraege.* FROM DOKPos RIGHT OUTER JOIN Rueckstand_Auftraege ON DOKPos.POS_NR = Rueckstand_Auftraege.POS_NR WHERE (Rueckstand_Auftraege.offeneAUFSTK > 0) AND (Rueckstand_Auftraege.Nummernkreis =: P_nummernkreis) order by Rueckstand_Auftraege.Zeile Ergebnis: funktioniert ! Warum ?? verstehe ich nicht? gibt's da eine Idee von jemanden? |
AW: ADOQUERY mit Unterabfrage
Zitat:
|
AW: ADOQUERY mit Unterabfrage
Ist im Management-Studio auch das komplette Abfrageergebnis das oder nur die ersten Ergebnisse?
|
AW: ADOQUERY mit Unterabfrage
Deine ursprüngliche Abfrage war aber ein inner Join. U.U. kommt jetzt eine größere Ergebnismenge heraus.
|
AW: ADOQUERY mit Unterabfrage
Zitat:
Gruß K-H |
AW: ADOQUERY mit Unterabfrage
Zitat:
Da fällt mir noch etwas ein: Im SSMS siehst Du die ersten Zeilen manchmal sofort, aber es kann sein, das die Query trotzdem ewig braucht, bis sie *fertig* ist. In Delphi wartest Du, bis alle Daten da sind. Prüfe also im SSMS, wie lange es dauert, bis die Query fertig ist. Ich würde einen Index auf die Pos-Nr setzen und das Order-by erst einmal weglassen. Sortieren kannst Du auch im Client. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 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