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

 

Quellen der Selektivitätsschätzung

Der Optimierer kann für jedes Prädikat alle folgenden Quellen für Selektivitätsschätzungen verwenden. Die gewählte Quelle wird im grafischen und im ausführlichen Plan für die Abfrage angezeigt.

  • Statistiken (Statistics)   Der Optimierer kann mithilfe von gespeicherten Spaltenstatistiken Selektivitätsschätzungen berechnen. Wenn Konstanten im Prädikat verwendet werden, sind die gespeicherten statistischen Daten nur verfügbar, wenn die Selektivität einer Konstante eine Zahl mit ausreichender Signifikanz ist, die in den Statistiken gespeichert wird.

    Beispiel: Das Prädikat EmployeeID > 100 kann Spaltenstatistiken als Quelle für die Selektivitätsschätzung verwenden, wenn die Statistik für die Spalte "EmployeeID" vorhanden ist.

  • Join   Der Optimierer kann Integritätsregeln zur Erhaltung der referenziellen Integrität, Eindeutigkeits-Integritätsregeln oder Join-Histogramme zum Berechnen von Selektivitätsschätzungen verwenden. Join-Histogramme werden für ein Prädikat der Form T.X=R.X aus den verfügbaren statistischen Daten der Spalten "T.X" und "R.X" berechnet.

  • Spalte-Spalte (Column-Column)   Wenn einem Join keine Integritätsregeln zur Erhaltung der referenziellen Integrität, Eindeutigkeits-Integritätsregeln oder Join-Histogramme als Selektivitätsquellen zur Verfügung stehen, kann der Optimierer die geschätzte Anzahl von Zeilen in der Join-Ergebnismenge dividiert durch die Anzahl der Zeilen im kartesischen Produkt der beiden Tabellen verwenden.

  • Spalte   Der Optimierer kann den Durchschnitt aller in der Spaltenstatistiken gespeicherten Werte verwenden.

    Beispiel: Die Selektivität des Prädikats DepartmentName = Ausdruck kann unter Verwendung des Durchschnitts berechnet werden, wenn Ausdruck keine Konstante ist.

  • Index   Der Optimierer kann Indizes zum Berechnen von Selektivitätsschätzungen untersuchen. Im Allgemeinen wird ein Index für Selektivitätsschätzungen verwendet, wenn keine anderen Quellen von Selektivitätsschätzungen, wie zum Beispiel Spaltenstatistiken, benutzt werden können.

    Für das Prädikat DepartmentName = 'Sales' kann der Optimierer z.B. einen Index benutzen, der für die Spalte "DepartmentName" definiert wurde, um die Anzahl der Zeilen mit dem Wert "Sales" zu schätzen.

  • Benutzer   Der Optimierer kann vom Benutzer bereitgestellte Selektivitätsschätzungen verwenden, vorausgesetzt die user_estimates-Datenbankoption ist nicht auf "Disabled" gesetzt. Siehe user_estimates-Option.

  • Annahme   Der Optimierer kann die beste Annahme für die Berechnung von Selektivitätsschätzungen heranziehen, wenn kein relevanter Index benutzt werden kann, keine Statistiken für die referenzierten Spalten gesammelt wurden oder das Prädikat ein komplexes Prädikat ist. In diesem Fall werden systemeigene Näherungsannahmen für jeden Typ von Prädikat definiert.

  • Berechnet   Beispiel: Für ein sehr komplexes Prädikat wurde die Selektivitätsschätzung auf 100 % und die Selektivitätsquelle auf "Berechnet" festgelegt, als die Selektivitätsschätzung berechnet wurde, zum Beispiel durch Multiplikation oder Addition der Selektivität.

  • Immer   Wenn ein Prädikat immer TRUE ist, ist die Selektivitätsquelle "Immer". Das Prädikat 1=1 ist z.B. immer TRUE.

  • Kombiniert   Wenn die Selektivitätsschätzung durch die Kombination mehrerer der oben genannten Quellen berechnet wird, ist die Selektivitätsquelle "Kombiniert".

  • Beschränkt   Wenn SQL Anywhere eine obere bzw. untere Grenze für die Selektivitätsschätzung festgelegt hat, ist die Selektivitätsquelle "Beschränkt". Beispiel: Grenzwerte sollen sicherstellen, dass eine Schätzung nicht höher als 100 % liegt oder dass die Selektivität nicht weniger als 0 % beträgt.

 Siehe auch