Abfragen optimieren und ausführen
Für einen effizienten Betrieb schreibt Adaptive Server Anywhere normalerweise Ihre Abfrage in ein neues Format um, möglicherweise in mehreren Schritten. Er stellt sicher, dass die neue Version zum selben Ergebnis kommt, auch wenn die Abfrage auf eine neue Art formuliert ist. Anders ausgedrückt, schreibt Adaptive Server Anywhere Ihre Abfragen in semantisch äquivalente, aber syntaktisch unterschiedliche Formate um.
Adaptive Server Anywhere kann eine Anzahl von unterschiedlichen Umschreibungsvorgängen durchführen. Wenn Sie die Zugriffspläne studieren, werden Sie häufig feststellen, dass sie keine literale Interpretation Ihrer ursprünglichen Anweisung darstellen. Der Optimierer versucht zum Beispiel, wann immer möglich Unterabfragen mit Joins umzuschreiben. Die Tatsache, dass es dem Optimierer freisteht, Ihre SQL-Anweisungen umzuschreiben, und die Art, wie er dies durchführt, kann für Sie wichtig sein.
Im Gegensatz zur SQL-Sprachdefinition schreiben manche Sprachen das Verhalten bei AND- und OR-Vorgängen genau vor. Manche garantieren, dass die linke Bedingung zuerst berücksichtigt wird. Wenn dann die Gültigkeit der gesamten Bedingung ermittelt werden kann, garantiert der Compiler, dass die rechte Bedingung nicht ausgewertet wird.
Diese Anordnung ermöglicht es Ihnen, Bedingungen zu kombinieren, die sonst zwei verschachtelte IF-Anweisungen verlangen würden. In C können Sie zum Beispiel testen, ob ein Zeiger NULL ist, bevor Sie ihn verwenden. Sehen Sie sich folgende verschachtelte Bedingungen an:
if ( X != NULL ) {
if ( X->var != 0 ) {
... statements ...
}
}Sie können sie durch diese kompakteren Ausdrücke ersetzen:
if ( X != NULL && X->var != 0 ) {
... statements ...
}Anders als C kennt SQL keine solchen Regeln für die Ausführungsreihenfolge. Adaptive Server Anywhere steht es frei, die Reihenfolge solcher Bedingungen zu verändern, wo es nötig ist. Das neu sortierte Format ist semantisch äquivalent, weil die SQL-Sprachspezifikation keine Unterscheidung trifft. Vor allem Optimierern für Abfragen steht es völlig frei, Prädikate in einer WHERE-, HAVING- und ON-Klausel neu zu sortieren.
Prädikat-Analyse
Arten von semantischen Transformationen
SQL Anywhere Studio 9.0.1
Copyright © 1989–2004 Sybase Inc. Teil-Copyright © 2001–2004 iAnywhere Solutions Inc. Alle Rechte vorbehalten.