读书人

Informix 11.5 SQL 话语性能监控方法及

发布时间: 2013-10-22 16:16:51 作者: rapoo

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)

?

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

读书人网 >网络基础

热点推荐