Mit dieser Anweisung rufen Sie eine Textspezifikation der Optimierungsstrategie ab, die für einen bestimmten Cursor verwendet wird.
EXPLAIN PLAN FOR CURSOR Cursorname { INTO Hostvariable | USING DESCRIPTOR SQLDA-Name }
Cursorname : Bezeichner oder Hostvariable
SQLDA-Name : Bezeichner
Die EXPLAIN-Anweisung ruft eine Textrepräsentation der Optimierungsstrategie für den benannten Cursor ab. Der Cursor muss zuvor deklariert und geöffnet worden sein.
Die Hostvariable oder die SQLDA-Name-Variable muss eine Zeichenfolge sein. Die Optimierungszeichenfolge gibt an, in welcher Reihenfolge die Tabellen durchsucht werden und auch, wenn vorhanden, welche Indizes für die Durchsuchungen verwendet werden.
Diese Zeichenfolge kann lang sein, abhängig von der Abfrage. Sie hat folgendes Format:
table (index), table (index), ... |
Wenn einer Tabelle ein Korrelationsname gegeben wurde, erscheint dieser Korrelationsname an Stelle des Tabellennamens. Die Namen in der Liste erscheinen in der gleichen Reihenfolge, in welcher der Datenbankserver auf sie zugreift. Nach jeder Tabelle steht ein in Klammern gesetzter Indexname. Hierbei handelt es sich um den Index, der für den Zugriff auf die Tabelle verwendet wird. Wenn kein Index verwendet wird (die Tabelle wird sequenziell durchsucht), werden die Buchstaben "seq" an Stelle des Indexnamens angezeigt. Wenn eine bestimmte SQL SELECT-Anweisung Unterabfragen erfordert, wird jede Optimierungszeichenfolge der Unterabfrage durch einen Doppelpunkt (:) getrennt. Diese Unterabfrageabschnitte erscheinen in der Reihenfolge, in welcher der Datenbankserver die Abfragen ausführt.
Nach der erfolgreichen Ausführung der EXPLAIN-Anweisung wird in das Feld sqlerrd des SQLCA (SQLIOESTIMATE) die geschätzte Anzahl der Eingabe/Ausgabevorgänge eingetragen, die notwendig sind, um alle Zeilen der Abfrage abzurufen.
Eine Erläuterung mit zahlreichen Beispielen für Optimierungszeichenfolgen finden Sie unter Datenbankperformance steigern.
Sie müssen den benannten Cursor geöffnet haben.
Keine.
SQL/2003 Erweiterung des Herstellers
Das folgende Beispiel veranschaulicht die Verwendung von EXPLAIN:
EXEC SQL BEGIN DECLARE SECTION; char plan[300]; EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE employee_cursor CURSOR FOR SELECT EmployeeID, Surname FROM Employees WHERE Surname like :pattern; EXEC SQL OPEN employee_cursor; EXEC SQL EXPLAIN PLAN FOR CURSOR employee_cursor INTO :plan; printf( "Optimization Strategy: '%s'.n", plan ); |
Die Planvariable enthält die folgende Zeichenfolge:
'Employees <seq>' |
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |