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

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Referenzhandbuch » Verwendung von SQL » SQL-Funktionen » SQL-Funktionen (E-O)

 

ESTIMATE_SOURCE-Funktion [Verschiedene]

Liefert die Quelle für Selektivitätsschätzungen, die vom Abfrageoptimierer verwendet werden

Syntax
ESTIMATE_SOURCE(Spaltenname [ , Wert [, Relationszeichenfolge ] ] )
Parameter
  • Spaltenname   Der Name der Spalte, die untersucht wird

  • Wert   Der Wert, mit dem die Spalte verglichen wird. Der Standardwert ist NULL.

  • Relationszeichenfolge   Der Vergleichsoperator, der für den Vergleich verwendet wird, in Apostrophe gesetzt. Mögliche Werte für diesen Parameter sind: '=' , '>' , '<' , '>=' , '<=' , '<>' , '!=' , '!<' , und '!>'. Der Standardwert ist '='.

Rückgabe

Die Quelle der Selektivitätsschätzung. Sie kann sein:

  • Statistiken (Statistics)   Werden als Quelle verwendet, wenn Sie einen Wert eingegeben haben und eine gespeicherte Statistik verfügbar ist, die die durchschnittliche Selektivität des Werts in der Spalte bewerten kann. Die Statistik ist nur verfügbar, wenn die Selektivität des Werts eine Zahl mit ausreichender Signifikanz ist, die in den Statistiken gespeichert wird. Ein Wert wird als signifikant angesehen, wenn er in mindestens 1% der Zeilen vorkommt.

  • Spalte   Ähnlich wie Statistiken, nur wird die Selektivität des Werts in weniger als 1% der Zeilen angetroffen. In diesem Fall ist die benutzte Selektivität der Durchschnitt aller Werte, die in den Statistiken gespeichert wurden und in weniger als 1% der Zeilen vorkamen.

  • Annahme (Guess)   Wird zurückgegeben, wenn kein relevanter Index benutzt werden kann und für die Spalte keine Statistiken gesammelt wurden. In diesem Fall werden systemeigene Näherungsannahmen benutzt.

  • Spalte-Spalte (Column-Column)   Wird zurückgegeben, wenn die benutzte Schätzung die Selektivität eines Joins ist. In diesem Fall wird die Schätzung als Anzahl von Zeilen im Join-Ergebnis berechnet, dividiert durch die Anzahl der Zeilen im kartesischen Produkt der beiden Tabellen.

  • Index   Wird als Quelle benutzt, wenn keine Statistiken für die Schätzung der Selektivität vorhanden sind, aber ein Index existiert, der für die Schätzung der Selektivität herangezogen werden kann.

  • Benutzer   Wird zurückgegeben, wenn es eine vom Benutzer übergebene Schätzung gibt und die Datenbankoption user_estimates nicht auf DISABLED gesetzt wurde.

    Weitere Hinweise finden Sie unter user_estimates-Option [Datenbank].

  • Berechnet (Computed)   wird zurückgegeben, wenn Statistiken durch den Optimierer basierend auf anderen Informationen berechnet werden. Beispiel: SQL Anywhere führt keine Statistiken über mehrere Spalten. Wenn Sie eine Schätzung zu einer Gleichung über mehrere Spalten benötigen, wie z.B. x=5 und y=10, und Statistiken zur Spalte x und zur Spalte y vorhanden sind, erstellt der Optimierer eine Schätzung, indem er die geschätzte Selektivität für jede Spalte multipliziert.

  • Immer   Wird benutzt, wenn der Text definitionsgemäß wahr ist. Beispielsweise, wenn der Wert 1=1 ist.

  • Kombiniert (Combined)   Wird benutzt, wenn der Optimierer mehr als eine der oben genannten Quellen benutzt und sie kombiniert.

  • Beschränkt (Bounded)   Kann eine der anderen Quellen qualifizieren. Dies weist darauf hin, dass SQL Anywhere eine obere oder untere Grenze für die Schätzung aktiviert hat. Der Optimierer tut dies innerhalb logischer Grenzen. Zum Beispiel sorgt er dafür, dass eine Schätzung nicht höher als 100% oder eine Schätzung nicht geringer als 1 Zeile sein kann.

Bemerkungen

Wenn Wert NULL ist, werden die Relationszeichenfolgen "=" und "!=" als die Bedingung IS NULL bzw. IS NOT NULL interpretiert.

Siehe auch
Standards und Kompatibilität
  • SQL/2003   Erweiterung des Herstellers

Beispiel

Die folgende Anweisung gibt den Wert "Index" zurück, was bedeutet, dass der Abfrageoptimierer zur Schätzung der Selektivität einen Index ausgewertet hat.

SELECT FIRST ESTIMATE_SOURCE( EmployeeID, 200, '>' )
   FROM Employees
   ORDER BY 1;