Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Abfragen optimieren und ausführen

 

Semantische Abfragentransformation

Um effizient zu arbeiten, schreibt SQL Anywhere Ihre Abfragen in semantisch äquivalente, aber syntaktisch unterschiedliche Formen um. SQL Anywhere führt viele unterschiedliche Neuschreibungsvorgänge durch.

Wenn Sie die Zugriffspläne studieren, werden Sie häufig feststellen, dass sie keine wörtliche Interpretation Ihrer ursprünglichen Anweisung darstellen. Um beispielsweise Ihre SQL-Anweisungen effizienter zu gestalten, versucht der Optimierer, so weit es geht Unterabfragen mit Joins umzuschreiben.

In der Neuschreibungsphase für Abfragen führt SQL Anywhere mehrere Transformationen durch, um nach effizienteren und sinnvolleren Darstellungen der Abfrage zu suchen. Da die Abfrage möglicherweise in eine semantisch gleichwertige Abfrage umgeschrieben wird, kann sich der Plan erheblich von der wörtlichen Interpretation Ihrer ursprünglichen Abfrage unterscheiden. Übliche Änderungen sind z.B. folgende:

  • Unnötige DISTINCT-Bedingungen entfernen

  • Unterabfragen entschachteln

  • Prädikat-Pushdown in UNION- oder GROUP-Ansichten und abgeleiteten Tabellen durchführen

  • OR- und IN-Listen-Prädikate optimieren

  • LIKE-Prädikate optimieren

  • Outer-Joins zu Inner-Joins konvertieren

  • Outer-Joins und Inner-Joins entfernen

  • Nutzbare Bedingungen durch Prädikat-Inferenz suchen

  • Unnötige Konvertierung der Groß- und Kleinschreibung entfernen

  • Unterabfragen als EXISTS-Prädikate umschreiben

Hinweis

Einige Neuschreibungsoptimierungen für Abfragen können nicht im Hauptabfrageblock durchgeführt werden, wenn der Cursor aktualisierbar ist. Deklarieren Sie den Cursor als schreibgeschützt, um die Optimierungen nutzen zu können. Siehe Cursortypen auswählen und DECLARE CURSOR-Anweisung [ESQL] [SP].

Ein Beispiel für eine Optimierung, die nicht durchgeführt werden kann, wenn der Hauptabfrageblock ein aktualisierbarer Cursor ist, finden Sie unter Unnötige Inner- und Outer-Joins eliminieren.

Einige Neuschreibungsoptimierungen, die während der Neuschreibungsphase für Abfragen durchgeführt werden, sind in den Ergebnissen der Funktion REWRITE einsehbar. Siehe REWRITE-Funktion [Verschiedene].

 Beispiel

Unnötige DISTINCT-Bedingungen eliminieren
Unterabfragen entschachteln
Prädikat-Pushdown in UNION- oder GROUP-Ansichten und abgeleiteten Tabellen
OR- und IN-Listen-Prädikate optimieren
LIKE-Prädikate optimieren
Outer-Joins in Inner-Joins konvertieren
Unnötige Inner- und Outer-Joins eliminieren
Nutzbare Bedingungen durch Prädikat-Inferenz suchen
Unnötige Konvertierung der Groß- und Kleinschreibung eliminieren
Umschreiben von Unterabfragen als EXISTS-Prädikate
Inlining von benutzerdefinierten Funktionen
Inlining von einfachen Systemprozeduren