Collection Contents 上一页 下一页 PDF

ASA SQL 参考

SQL 语句

EXPLAIN 语句 [ESQL]


说明 

此语句用于检索用于特定游标的优化策略的文本说明。

语法 

EXPLAIN PLAN FOR CURSOR cursor-name
{  INTO hostvar | USING DESCRIPTOR sqlda-name }

cursor-name :  identifier 或 hostvar

sqlda-name :   identifier

用法 

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

hostvarsqlda-name 变量必须是字符串类型。优化字符串指定搜索表的顺序,还指定搜索所使用的索引(如果有的话)。

根据查询的不同,该字符串可能很长,并且具有以下格式:

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

如果为表提供了相关名,将出现相关名而不是表名。表名在列表中出现的顺序就是数据库服务器访问它们的顺序。每个表名后是一个括在括号内的索引名。这是将用于访问该表的索引。如果不使用任何索引(将按顺序扫描表),将显示字母"seq"代替索引名。如果特定的 SQL SELECT 语句涉及子查询,将用冒号 (:) 分隔每个子查询的优化字符串。这些子查询部分将按照数据库服务器执行查询的顺序出现。

成功执行 EXPLAIN 语句之后,SQLCA (SQLIOESTIMATE) 的 sqlerrd[3] 字段将由读取查询的所有行所需的输入/输出操作数估计值填充。

监控和提高性能中可以找到很多有关优化字符串示例的讨论。

权限 

必须已经打开指定的游标。

副作用 

无。

另请参见 
标准和兼容性 
示例 

下面的示例阐释了 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>'

Collection Contents 上一页 下一页 PDF