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 » So funktioniert der Optimierer » Optimiererschätzungen und Spaltenstatistiken

 

Wie der Optimierer Heuristiken verwendet

Für jede Tabelle in einem möglichen Ausführungsplan schätzt der Optimierer die Anzahl der Zeilen, die Teil der Ergebnisse sein können. Die Anzahl der Zeilen hängt von der Größe der Tabelle und von den Einschränkungen in der WHERE-Klausel oder der ON-Klausel der Abfrage ab.

Unter Berücksichtigung des Histogramms für eine Spalte schätzt SQL Anywhere die Anzahl der Zeilen, die die Vorgaben eines gegebenen Abfrageprädikats auf die Spalte erfüllen. Hierzu rechnet er die Anzahl der Zeilen in all den Wertebereichen zusammen, welche die dem spezifischen Prädikat entsprechenden Werte überlappen. Für Wertebereiche in den Histogrammen, die teilweise in der Ergebnismenge der Abfrage enthalten sind, verwendet SQL Anywhere eine Interpolation in den Wertebereichen.

Häufig verwendet der Optimierer differenziertere Heuristiken. Der Optimierer verwendet z.B. nur dann Standardschätzungen, wenn keine besseren Statistiken verfügbar sind. Der Optimierer benutzt außerdem Indizes und Schlüssel, um seine Schätzung der Zeilenanzahl zu verbessern. Es folgen einige Beispiele für Einzelspalten:

  • Eine Spalte mit einem Wert vergleichen: Die Schätzung ergibt eine Zeile, wenn die Spalte einen eindeutigen Index hat oder Primärschlüssel ist.

  • Ein Vergleich einer Spalte im Index mit einer Konstante: Index untersuchen, um den Prozentsatz der Zeilen zu schätzen, für die der Vergleich zutrifft.

  • Einen Fremdschlüssel einem Primärschlüssel gleichsetzen (Schlüssel-Join): Relative Tabellengrößen bei der Bestimmung einer Schätzung verwenden. Wenn zum Beispiel eine 5000zeilige Tabelle einen Fremdschlüssel zu einer 1000-zeiligen Tabelle hat, schätzt der Optimierer, dass es fünf Fremdschlüsselzeilen für jede Primärschlüsselzeile gibt.

 Siehe auch