![]() |
Jeder 60te mach Probleme!
Halli Hallo!
Die Situation sieht folgender Maßen aus: Ich habe auf meiner Datenbank(AS400) mehrere Tabellen, auf die ich mit einem TQUERY zugreife und die Daten in ein Textfile übertrage. Mit den Schlüsseln der ersten Tabelle suche ich in einer zweiten Tabelle die gesuchten Datensatz, wobei einer ca. 460 Felder besitzt. und schreibe diesen gefundenen in die Textfile. Nun mein Problem: Es sind einige Tausend Sätze. Die einzelnen Abfragen(TQuery) bewegen sich im Millisekundenbereich, aber bei ca. jeden 60ten Satz benötigt das TQuery ca. 40 Sekunden. Da diese Situation sehr oft autritt brauche ich min. 30 Minuten länger und ich weiss nicht wie ich dieses Phänomen unterbinde. Es sind nie die gleichen Datensätze die das jeweilige TQuery verzögern. Kann mir jemand helfen? mfg subw00fer |
Re: Jeder 60te mach Probleme!
Ich bins noch einmal!
Kann es sein, dass diese Abfragen den Buffer vollschreiben und nach einer gewissen Grösse wird dieser geloschen -> Zeitverzögerung? |
Re: Jeder 60te mach Probleme!
Versuch mal, stadt mit einer Query (umständlich ich weiß) die daten in einen Stream zu lesen (und schreiben). Dadurch kannst du sehen, ob dein Problem im Query oder in der Tabelle selbst liegt. Bei entsprechenden Streams kannst du von haus aus Bufferzonen mit angeben, bei mitleren DB´s ist das noch möglich und sogar schneller. Bei großen würd ich vom Speicherplatz, fehlender Index usw. davon abraten. Hab leider keinen Quellcode mehr parad, weil ich imho net mit Streams arbeite.
|
Re: Jeder 60te mach Probleme!
Hallo subwOOfer,
wenn du sowieso alle Daten in ein Textfile schreibst, solltest du nach dem Öffnen der Query FetchAll aufrufen, um alle Daten der Query auf einen Schlag zu bekommen. |
Re: Jeder 60te mach Probleme!
Hallo!
Nocheinmal die Situation: Ich lese den ersten Datensatz aus der ersten Tabelle und schreibe in sofort in ein Textfile. Mit einen Schlüssel vom ersten Datensatz gehe ich zur nächsten Tabelle und lese den gesuchten Datensatz aus und schreibe ihn in das Textfile, danach gehe ich zur nächsten Tabelle mit dem gleichen schlüssel,usw. Dann beginnt das Spiel von vorne mit der ersten Tabelle und den zweiten Datensatz. Nur einen Tabelle liegt dazwischen, die 460 Felder besitzt und ich muss sie(Felder) auf einmal auslesen. Es funktioniert ja auch perfekt, doch ca. jeder 60te macht Probleme. Wenn der Buffer das Problem macht. Kann ich ihn nicht jedes mal irgendwie leeren? P.S.:Mit Stream hab ich noch nie gearbeitet. Ich werde sie mir einmal ansehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:33 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 by Thomas Breitkreuz