首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

Informix 11.5 SQL 话语性能监控方法及实现(set explain on) zz

2013-10-22 
Informix 11.5 SQL 语句性能监控方法及实现(set explain on) zz输出行所选的查询计划描述DIRECTIVES FOLLO

Informix 11.5 SQL 语句性能监控方法及实现(set explain on) zz
输出行所选的查询计划描述DIRECTIVES FOLLOWED: EXPLAIN AVOID_EXECUTE使用伪指令 EXPLAIN 和 AVOID_EXECUTE 来显示查询计划,而不执行查询。Estimated # of Rows Returned: 7估计该查询返回 7 行。Estimated Cost: 7该估计成本值为 7,优化程序使用该值来比较不同查询计划并选择成本最低的查询计划。1) Informix.r: SEQUENTIAL SCAN将 cust_calls r 表用作外表并对它进行扫描以获取每一行。2) Informix.l: INDEX PATH对于外表中的每一行,请使用索引获取内表 customer l 中的匹配行。(1) Index Keys: customer_num (Serial, fragments: ALL)使用 customer_num 列的索引,对其进行连续扫描,并扫描所有的分段(customer l 表只有一个分段组成)。Lower Index Filter: Informix.l.customer_num = Informix.r.customer_num从外表的 customer_num 值开始进行索引扫描。NESTED LOOP JOIN采用嵌套循环连接方式

?

?

如果用户没有访问 SQL

onmode -Y 命令基本语法:

调用解释onmode -Y sessionid 2打开对 sessionid 的 SET EXPLAIN,并且仅显示查询计划onmode -Y sessionid 1打开对 sessionid 的 SET EXPLAINonmode -Y sessionid 0关闭对 sessionid 的 SET EXPLAIN

?

当使用 onmode -Y 命令打开 SET EXPLAIN 时,输出显示在sqexplain.out.sessionid 文件中。

如果希望动态对 session 30 打开 SET EXPLAIN ON AVOID_Execute 特性,我们可以运行:

值描述0禁用查询统计信息的显示1启用查询统计信息的显示

?

我们也可以通过修改 onconfig 文件来修改此值,也可以通过 onmode – wf 及 onmode – wm 命令动态设置该值。

QUERY:  ------  SELECT company, fname, lname, phone  FROM customer c  WHERE EXISTS(    SELECT customer_num FROM cust_calls u       WHERE c.customer_num = u.customer_num)  Estimated Cost: 6  Estimated # of Rows Returned: 7  1) virginia.c: SEQUENTIAL SCAN   2) virginia.u: INDEX PATH  (First Row)     (1) Index Keys: customer_num call_dtime   (Key-Only)  (Serial, fragments: ALL)           Lower Index Filter: virginia.c.customer_num = virginia.u.customer_num  NESTED LOOP JOIN  (Semi Join)

?

当优化程序将子查询更改成连接时,它可以使用存取计划和连接计划的几种变形形式:

  • 首行扫描

    首行扫描是表扫描的一种变形形式。当数据库服务器找到一个匹配时,表扫描将停止。

  • 忽略副本索引扫描

    忽略副本索引扫描是索引扫描的一种变形形式。数据库服务器不扫描副本。

  • 半连接

    半连接是嵌套循环连接的一种变形形式。当第一个匹配找到时,数据库服务器将停止内表扫描。

    ?

    通过对 SQL 语句查询计划的分析,我们可以知道 SQL 语句在执行过程中是采用什么样的访问方法,是顺序扫描还是索引扫描;表之间连接采用什么样的方法,是嵌套循环连接还是哈希连接;表之间访问的顺序是什么;是否产生了临时表;该查询的成本是多少。依此,我们就可以考虑,为了提高 SQL 语句性能,我们是不是要创建合适的索引, 是不是要调整一下表之间连接的顺序,是不是要修改一下 SQL 语句的写法等。通常,我们在调整时,可以比较一下改变之前及改变之后的查询成本,保证查询成本有一个明显的减少。另外,我们还可以通过设置 OPTCOMPIND 参数来指定数据访问方法 ;通过访问计划指示、连接次序指示、连接计划指示、目标指示来指定数据访问方法、表连接顺序、表连接方法及数据返回结果集;通过执行 update statistics 语句提高 SQL 语句性能。关于 OPTCOMPIND 参数及查询指示的具体使用方法,请参考 Informix 信息中心相关内容。

热点排行