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

SQL Anywhere 12.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Performanceverbesserungen, Diagnosen und Monitoring » Tipps zum Verbessern der Performance

 

Ziel des Optimierers auswählen

Die Option "optimization_goal" legt fest, ob SQL Anywhere SQL-Anweisungen in Bezug auf Antwortzeiten ("erste Zeile") oder Ressourcenverbrauch ("alle Zeilen") optimiert. Einfacher gesagt, können Sie wählen, ob die Abfrageverarbeitung dahingehend optimiert werden soll, dass die erste Zeile schnell zurückgegeben wird, oder dass die Kosten für die Rückgabe der gesamten Ergebnismenge minimiert werden sollen.

Wenn die Option auf "First-row" gesetzt ist, wählt SQL Anywhere einen Zugriffsplan, der die Zeitspanne zum Abruf der ersten Zeile der Ergebnismenge reduzieren soll, worunter möglicherweise die Gesamtabrufzeit leidet. Insbesondere wird der Optimierer in der Regel Zugriffspläne vermeiden, die die Materialisierung von Ergebnissen erfordert, um die Zeitspanne zur Darstellung der ersten Zeile zu verkürzen. Mit dieser Einstellung zum Beispiel bevorzugt der Optimierer Zugriffspläne, die für die ORDER BY-Klausel einer Abfrage einen Index benutzen, anstelle von Zugriffsplänen, die einen expliziten Sortiervorgang benötigen.

Das Ziel der Optimierung, das der Optimierer bei einer bestimmten Anweisung verwendet, wird von folgenden Regeln bestimmt:

  • Wenn der Hauptabfragenblock eine Tabelle in der FROM-Klausel hat, bei der der Tabellen-Hint auf FASTFIRSTROW gesetzt ist, wird die Anweisung unter Verwendung der First-row-Optimierung optimiert.

  • Wenn die Anweisung eine OPTION-Klausel hat, die eine Einstellung für die Option "optimization_goal" enthält, wird die Anweisung unter Verwendung dieser Einstellung optimiert.

  • Ansonsten verwendet der Optimierer die aktuelle Einstellung der Option "optimization_goal".

Beachten Sie, dass der Optimierer, selbst wenn das Ziel der Optimierung "First-row" ist, möglicherweise nicht in der Lage ist, einen Plan zu finden, der die erste Zeile schnell zurückzugeben kann. Anweisungen, die eine Materialisierung auf Grund von DISTINCT-, GROUP BY- oder ORDER BY-Klauseln erfordern und für die kein relevanter Index existiert, um die benötigte Reihenfolge festzulegen, werden mit dem Ziel "All-rows" optimiert.

Wenn die Option auf "All-rows" (Standardwert) gesetzt ist, wird die SQL Anywhere-Abfrage optimiert, um einen Zugriffsplan mit der geschätzten Mindestabrufzeit zu verwenden. Die Einstellung "All-rows" für "optimization_goal" ist in der Regel für Anwendungen sinnvoll, die die komplette Ergebnismenge verarbeiten sollen, wie z.B. PowerBuilder DataWindow-Anwendungen.

 Siehe auch