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 or hostvar
sqlda-name : identifier
注释

EXPLAIN 语句检索指定游标的文本形式优化策略。游标必须已事先声明并处于打开状态。

hostvarsqlda-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 );

plan 变量包含以下字符串:

'Employees <seq>'