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-Anweisungen » SQL-Anweisungen (E-O)

 

EXPLAIN-Anweisung [ESQL]

Mit dieser Anweisung rufen Sie eine Textspezifikation der Optimierungsstrategie ab, die für einen bestimmten Cursor verwendet wird.

Syntax
EXPLAIN PLAN FOR CURSOR Cursorname
{  INTO Hostvariable | USING DESCRIPTOR SQLDA-Name }
Cursorname : Bezeichner oder Hostvariable
SQLDA-Name : Bezeichner
Bemerkungen

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.

Berechtigungen

Sie müssen den benannten Cursor geöffnet haben.

Nebenwirkungen

Keine.

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

Beispiel

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>'