此语句用于检索用于特定游标的优化策略的文本说明。
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[3] 字段将由读取查询的所有行所需的输入/输出操作数估计值填充。
在监控和提高性能中可以找到很多有关优化字符串示例的讨论。
必须已经打开指定的游标。
无。
SQL/92 供应商扩展。
SQL/99 供应商扩展。
Sybase 不受 Adaptive Server Enterprise 支持。
下面的示例阐释了 EXPLAIN 的用法:
EXEC SQL BEGIN DECLARE SECTION; char plan[300]; EXEC SQL END DECLARE SECTION; EXEC SQL DECLARE employee_cursor CURSOR FOR SELECT emp_id, emp_lname FROM employee WHERE emp_lname like :pattern; EXEC SQL OPEN employee_cursor; EXEC SQL EXPLAIN PLAN FOR CURSOR employee_cursor INTO :plan; printf( "Optimization Strategy: '%s'.n", plan );
计划变量包含以下字符串:
'employee <seq>'
SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。