Abfrage zu langsam für SkriptIch habe Query Builder verwendet, um mehrere Abfragen zu skripten. Dann habe ich diese Skripte Rücken an Rücken platziert. Als nächstes möchte ich mit den neuen Datentabellen arbeiten, die aus den Abfragen gebildet werden.
Mein Problem ist, dass die Ausführung einer der Abfragen mehr als 10 Sekunden dauert und die JSL, die den Abfragen folgt, versucht, mit der „zu bildenden“ Tabelle zu arbeiten (die nicht vorhanden ist, wenn das Skript zu diesem Teil des Codes gelangt). . Dies verursacht offensichtlich einen Fehler und beendet das Skript.
Ich habe versucht, den Befehl „Hintergrund ausführen“ zu verwenden, aber das scheint das Skript einfach komplett zu beenden.
Irgendwelche Ideen, wie ich die Abfragen ausführen und ein WAIT erzwingen kann, bis alle Abfragen ihre Tabellen zurückgegeben haben, bevor ich dann den Rest des Skripts ausführe (das auf diese Tabellen wirkt)?
Danke schön,
Martin
Betreff: Abfrage zu langsam für SkriptTut mir leid, dass ich zu spät gekommen bin – Brians Vorschlag zur Verwendung Führen Sie Vordergrund aus auf die Abfrage in JSL ist die Möglichkeit, sicherzustellen, dass eine Abfrage abgeschlossen ist, bevor die nächste JSL-Zeile ausgeführt wird. Kein Umschreiben nötig!
Erik
Betreff: Abfrage zu langsam für SkriptTatsächlich ist es sogar noch besser, Run Foreground zu verwenden.Tut mir leid, dass ich das nicht sofort richtig verstanden habe, aber so etwas wie:
Abfrage1 = Neue SQL-Abfrage (
Verbindung (...
) ,
Sortieren nach ( ) ,
PostQueryScript (...
)
) ;
Abfrage1 << Vordergrund ausführen;
sollte arbeiten.
Brian
Betreff: Abfrage zu langsam für SkriptHallo Martin,
Sie können auch versuchen, Hintergrundvorgänge für Abfragen zu deaktivieren.Das hat bei mir funktioniert.Sie können entweder zu „Einstellungen->Abfrage-Generator->ODBC->Abfragen im Hintergrund ausführen, wenn möglich“ gehen und das Kontrollkästchen deaktivieren, oder Sie können im Skript Folgendes tun:
Abfrage-Generator-Einstellungen (Hintergrundabfrage (0))
Ganz oben in Ihrem Skript.
Brian Corcoran
JMP-Entwicklung
Betreff: Abfrage zu langsam für SkriptVielen Dank, pmroz!!!! Das erfordert ein wenig Umschreiben, funktioniert aber wie ein Zauber!
Betreff: Abfrage zu langsam für SkriptIch werde das versuchen und euch wissen lassen, wie es ausgeht.
Danke
Betreff: Abfrage zu langsam für SkriptIch vermute, dass die Abfrage << Ausführen kehrt sofort zurück. Ich bin mir nicht sicher, wie Sie das synchronisieren könnten.
ich benutze SQL ausführen stattdessen, und das scheint bis zur Fertigstellung zu warten, bevor mit dem Skript fortgefahren wird. Wenn Sie beispielsweise vier SQL-Anweisungen ausführen müssten:
dbc = create database connection(<CONNECTION-STRING>);
dt1 = execute sql(dbc, sql1);
dt2 = execute sql(dbc, sql2);
dt3 = execute sql(dbc, sql3);
dt4 = execute sql(dbc, sql4);
close database connection(dbc);</CONNECTION-STRING>
Betreff: Abfrage zu langsam für SkriptJa. Wait(0) macht tatsächlich nicht das, was Sie vorschlagen. Die Abfragen werden tatsächlich in zufälliger Reihenfolge zurückgegeben, basierend auf (der scheinbaren) Größe und Komplexität. Ich habe 7 Anfragen und es ist die vierte, die sehr lange dauert. Ich habe versucht, diese Abfrage im Skript an die erste Stelle zu setzen, aber die anderen werden so schnell ausgeführt, dass diese immer noch nicht abgeschlossen ist, wenn der verbleibende Code im Skript ausgeführt wird.
Hier ist ein Teil des Codes, den ich verwende, wobei ein Großteil davon entfernt wurde, um die Quelle zu schützen. Aber es gibt die allgemeine Struktur vor. Der Kürze halber habe ich die Abfragen 4–7 und die letzten 4 Join-Anweisungen am Ende entfernt.
Abfrage1 = Neue SQL-Abfrage (
Verbindung (...
) ,
Sortieren nach ( ) ,
PostQueryScript (...
)
) ;
Abfrage1 << Laufen ;
Warten ( 0 ) ;
Abfrage2 = Neue SQL-Abfrage (
Verbindung (...
) ,
Sortieren nach ( ) ,
PostQueryScript (...
)
) ;
Abfrage2 << Laufen ;
Warten ( 0 ) ;
Abfrage3 = Neue SQL-Abfrage (
Verbindung (...
) ,
Sortieren nach ( ) ,
PostQueryScript (...
)
) ;
Abfrage3 << Laufen ;
Warten ( 0 ) ;
//Tabellen verbinden
Tabelle12 = Datentabelle ( „01“ ) << Verbinden (
Mit ( Datentabelle ( „02“ ) ) ,
Spalten mit demselben Namen zusammenführen,
Match-Flagge ( 0 ) ,
Durch passende Spalten (
:
) ,
Multiples löschen ( 0 , 0 ) ,
Nichtübereinstimmungen einbeziehen ( 0 , 0 ) ,
Behalten Sie die Reihenfolge der Haupttabelle bei ( 1 ) ,
Ausgabetabelle ( „12“ )
) ;
Table123 = Datentabelle ( „12“ ) << Verbinden (
Mit ( Datentabelle ( „03“ ) ) ,
Spalten mit demselben Namen zusammenführen,
Match-Flagge ( 0 ) ,
Durch passende Spalten (
:
) ,
Multiples löschen ( 0 , 0 ) ,
Nichtübereinstimmungen einbeziehen ( 0 , 0 ) ,
Behalten Sie die Reihenfolge der Haupttabelle bei ( 1 ) ,
Ausgabetabelle ( „123“ )
) ;
Betreff: Abfrage zu langsam für SkriptHaben Sie eine wait(0); Befehl nach jedem Abruf? Dadurch sollte JMP gezwungen werden, auf den Abschluss der vorherigen Befehle zu warten.