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

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 文 » SQL 文 (E ~ O)

 

EXPLAIN 文 [ESQL]

この文は、特定のカーソルに対して使う最適化方法のテキスト仕様を取得するために使用します。

構文
EXPLAIN PLAN FOR CURSOR cursor-name
{  INTO hostvar | USING DESCRIPTOR sqlda-name }
cursor-name : identifier または hostvar
sqlda-name : identifier
備考

EXPLAIN 文は、指定したカーソルに対する最適化方法のテキスト表現を検索します。事前にカーソルを宣言し開いておきます。

hostvar または sqlda-name 変数には、文字列型を使用してください。最適化文字列は、どのような順序でテーブルを検索するかを指定し、もしあればどのインデックスを検索に使用するかを指定します。

この文字列はクエリによっては長くなることがあり、次のようなフォーマットに従います。

table (index), table (index), ...

テーブルに相関名が付いている場合、相関名がテーブル名の代わりになります。テーブル名がリストに並ぶ順序は、データベース・サーバがそれらにアクセスする順序です。それぞれのテーブルの後には、カッコで囲んだインデックス名が置かれます。これは、テーブルへのアクセスに使用するインデックスです。インデックスを使わない場合 (テーブルを連続的にスキャンします)、英字 "seq" がインデックス名の代わりになります。特別の SQL SELECT 文が部分文字列を伴う場合、コロン (:) でそれぞれのサブクエリの最適化文字列が分割されます。これらのサブクエリ・セクションは、データベース・サーバがクエリを実行する順序で表示されます。

EXPLAIN 文が正常に実行された後で、SQLCA (SQLIOESTIMATE) の sqlerrd フィールドに、クエリのすべてのローをフェッチするのに必要な入出力操作の数の推定値が格納されます。

最適化文字列の例については、データベース・パフォーマンスの改善を参照してください。

パーミッション

指定するカーソルを事前に開いておいてください。

関連する動作

なし

参照
標準と互換性
  • SQL/2003   ベンダ拡張。

次の例は、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 );

計画変数には以下の文字列が含まれます。

'Employees <seq>'