|
Optimierung mit Event-Scripten |
Hoch Zurück Vor |
|
Bisher wurden Templates immer nur in der Form betrachtet, dass Abfragen erstellt wurden, die nach einer eventuellen Benutzereingabe ausgeführt und dann entsprechend angezeigt wurden. Das ist aber nicht die einzige Möglichkeit, die Ihnen DataNAUT CS zur Ausführung von SQL-Scripten bietet. Nebst den diversen Queries kann DataNAUT CS sogenannte Event-Scripte zu verschiedenen Zeitpunkten während der Template-Ausführung ausführen. So können Sie beispielsweise für das Template nötige Daten vor- oder nachbereiten.
Ein Event-Script ist ein SQL-Script, das zu einem bestimmten Zeitpunkt während der Ausführung eines Templates ausgeführt wird. Ein Script unterscheidet sich insofern von einem Query, als dass es im Gegensatz zum Query keine Daten zurückgibt. Daher sind die Event-Scripte auch eher dazu gedacht, Daten vor- oder nachzubereiten, die für die eigentliche Datenabfrage oder auch die Parameterauswahl verwendet werden sollen.
Die erste Möglichkeit ein Event-Script auszuführen, ist direkt nach dem Aufbau der Verbindung zur Datenbank, also dem Start der Template-Session. Dieses Ereignis ist das teeOnSessionOpen-Event. Wird eine Parametermaske verwendet, folgt als Nächstes das teeBeforeMaskShow-Event, das ausgeführt wird, bevor die Parametermaske angezeigt wird. Danach folgen die Ereignisse teeAfterGetMaskParameters (nach Klick auf OK in der Parametermaske) und teeAfterGetInjectedParameters (Parameter, die per Kommandozeile an das Template übergeben wurden). Vor dem Ausführen der fertigen SQL-Abfrage folgt dann das Event teeBeforeTemplateExecute und danach das teeAfterTemplateExecute-Event. Zum Abschluss kommt noch das Ereignis teeOnSessionClose, das ausgeführt wird, bevor die Datenbank-Verbindung wieder abgebaut wird.
Wofür eignen sich nun die Event-Scripte? Eine mögliche Anwendung ist die Optimierung von Parameter-Queries: Im Beispiel Parameter-Queries für voneinander abhängige Parameter werden in der Parametermaske zwei Steuerelemente DBCombo verwendet, um damit das Mindest- und das Höchstalter auszuwählen. Jedes Mal, wenn der Benutzer eine Auswahl über diese Steuerelemente machen will, wird erneut die komplette Datenbank auf vorhandene Alter durchsucht. Gerade bei großen Datenbeständen und vielen Zugriffen geht dies stark zu Lasten der Datenbank-Leistung.
Dies lässt sich dadurch optimieren, dass per Event-Script einmalig zu Beginn der Template-Session eine temporäre Tabelle erstellt wird, die alle gültigen Alter enthält. Die Parameter-Queries müssen dann nur noch auf dieser wesentlich kleineren Tabelle arbeiten, anstatt auf der kompletten Datenmenge:
1 Legen Sie eine Kopie des Templates aus dem Beispiel Parameter-Queries für voneinander abhängige Parameter an und öffnen Sie es im Templateeditor. 2 Markieren Sie in der Navigation den Punkt Basiseinstellungen / SQL-Abfragen und Scripte und klicken Sie dann im Menü unter SQL-Abfragen und Scripte auf den Button Neu.
3 Wählen Sie im Dialog Neue Abfrage / Neues Script zunächst den Punkt Event-Script und dann als Ausführungszeitpunkt den Eintrag teeOnSessionOpen aus. Klicken Sie danach auf OK, damit das neue Event-Script angelegt wird.
4 Markieren Sie jetzt unter Navigation den Punkt Basiseinstellungen / SQL-Abfragen und Scripte / Ereignisse / teeOnSessionOpen / 000 - EVENT_01 und geben Sie folgendes SQL-Script in den Editor ein: SELECT YEAR (CURDATE()) - YEAR (gdatum) "ID" INTO #Alter FROM adr GROUP BY 1 ORDER BY 1
Dieses Script legt die temporäre Tabelle Alter an, die nach Ausführung des Scripts alle gültigen Alter aufsteigend sortiert enthält. In diesem Beispiel wird die Syntax der in DataNAUT CS integrierten ADS-Datenbank verwendet. Bei anderen Datenbanken ist die jeweilige passende Syntax zu benutzen. 5 Ändern Sie nun das Parameter-Query für PARAM_MINALTER wie folgt um: SELECT * FROM #Alter
6 Das Parameter-Query für PARAM_MAXALTER ist ebenfalls wesentlich kürzer geworden: SELECT * FROM #ALTER WHERE ID >= :PARAM_MINALTER
7 Wählen Sie in der Navigation das Event-Script aus und aktivieren Sie dann in den Script-Einstellungen rechts im Templateeditor die Option Abfrage aktiviert. Ohne diese Option würde das Event-Script nicht ausgeführt werden und die Parameter-Queries eine Fehlermeldung erzeugen.
8 Speichern Sie die Änderungen und klicken Sie auf Testen. Das Öffnen der DBComboBoxen sollte nun wesentlich flotter geschehen, als ohne die Optimierung. Dafür verzögert sich nun der Start des Templates ein wenig. Dies wird aber dadurch aufgewogen, dass die Datenbank wesentlich weniger belastet wird, da für die Parameterauswahl nur noch einmal auf der kompletten Datenmenge gearbeitet wird, statt wie vorher mindestens zweimal. Es können übrigens beliebig viele Event-Scripte je Ereignis definiert werden, deren Ausführungsreihenfolge Sie beliebig festlegen können (selbstverständlich nur innerhalb eines Events). Damit steht Ihnen mit den Event-Scripten ein mächtiges Werkzeug zur Verfügung, nicht nur zur Optimierung von Datenabfragen.
|