此语句用于检索用于特定游标的优化策略的文本说明。
EXPLAIN PLAN FOR CURSOR cursor-name { INTO hostvar | USING DESCRIPTOR sqlda-name }
cursor-name : identifier or 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 ); |
plan 变量包含以下字符串:
'Employees <seq>' |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |