证券

多表连接时,为何走表扫描

tabscan.jpg


图中Q2和Q3的关联字段有
WHERE (Q3."LICE_DOC_STATUS" = '2') AND (Q3."REGIE_ID" = '000000000222222') AND (Q1."IF_USED" = '1')  AND (Q3."LICENSE_CODE" = Q2."LICENSE_CODE") AND (Q3."CUST_ID" = Q2."CUST_ID")



这里连接实际返回结果集行数为0,为何会让Q2表作为外表,不带条件的用TABSCAN呢?能调整吗?
附件是执行计划,非常感谢各位.



附件:

附件图标tabscan_01.fmt (39.97 KB)

附件图标db2batch_01.out (643.17 KB)

参与31

31同行回答

xu5762173xu5762173数据库管理员Ess
如果DB2 选择用nl join ,把 t2 作为outer table t1作为inner table,那么可以用到 t1.c2和t1.c3的索引, ...mdkii 发表于 2013-6-27 09:57     恩,I/O确实存在问题,接手这套系统的时候已经跑了五六年,规划之初客户就把很多高访问的容器堆在两个riad10上,日志也都...显示全部
如果DB2 选择用nl join ,把 t2 作为outer table t1作为inner table,那么可以用到 t1.c2和t1.c3的索引,
...
mdkii 发表于 2013-6-27 09:57



    恩,I/O确实存在问题,接手这套系统的时候已经跑了五六年,规划之初客户就把很多高访问的容器堆在两个riad10上,日志也都在这上面.
上面batch抓出来的信息是在每周最繁忙的时候,这个时候汇总大量数据,这一块确实有调优的空间.收起
证券 · 2013-06-27
浏览1093
xu5762173xu5762173数据库管理员Ess
回复 28# mdkii     mkdii您好,现在发现,很多表连接都有这个问题select t1.c1,t2.c1 from t1,t2 where t1.c2=t2.c2 and t1.c3=t2.c3 and t2.c4='aaa'类似这样的SQL,t1和t2连接时多于一个条件,t2有本地谓词t1都走表扫描,这个除了修改SQL,还有别的办法处理吗...显示全部
回复 28# mdkii


    mkdii您好,
现在发现,很多表连接都有这个问题
select t1.c1,t2.c1 from t1,t2 where t1.c2=t2.c2 and t1.c3=t2.c3 and t2.c4='aaa'

类似这样的SQL,t1和t2连接时多于一个条件,t2有本地谓词
t1都走表扫描,这个除了修改SQL,还有别的办法处理吗收起
证券 · 2013-06-26
浏览1019
xu5762173xu5762173数据库管理员Ess
从db2batch来看,你得系统比较忙。而且io是瓶颈。一次 physical reads 需要17、8毫秒,有的高达20多毫秒。 ...mdkii 发表于 2013-6-24 11:04     是的,IO瓶颈是正确的.这是周五下午的统计,同步结算等操作大量堆积.主要集中在两个raid10上,8块磁盘上...显示全部
从db2batch来看,你得系统比较忙。
而且io是瓶颈。一次 physical reads 需要17、8毫秒,有的高达20多毫秒。 ...
mdkii 发表于 2013-6-24 11:04



    是的,IO瓶颈是正确的.
这是周五下午的统计,同步结算等操作大量堆积.主要集中在两个raid10上,8块磁盘上收起
证券 · 2013-06-24
浏览1052
mdkiimdkii软件开发工程师bocn
从db2batch来看,你得系统比较忙。而且io是瓶颈。一次 physical reads 需要17、8毫秒,有的高达20多毫秒。你关注一下你的磁盘是不是过于busy了。可能你该跟存储的人讨论一下是不是磁盘划分得不合理。...显示全部
从db2batch来看,你得系统比较忙。
而且io是瓶颈。一次 physical reads 需要17、8毫秒,有的高达20多毫秒。
你关注一下你的磁盘是不是过于busy了。
可能你该跟存储的人讨论一下是不是磁盘划分得不合理。收起
银行 · 2013-06-24
浏览974
xu5762173xu5762173数据库管理员Ess
回复 25# leo     恩,大师说的有道理,这样做确实不太合理,希望有其他解决办法显示全部
回复 25# leo


    恩,大师说的有道理,这样做确实不太合理,希望有其他解决办法收起
证券 · 2013-06-21
浏览999
xu5762173xu5762173数据库管理员Ess
走index only是可以减少cost。但为专门的select字段定制索引会导致索引变得很多。从原先的计划看,虽然有 ...mdkii 发表于 2013-6-21 15:03     第一遍没有输出到文件,使用的时间是Type      Number      Repetitions...显示全部
走index only是可以减少cost。
但为专门的select字段定制索引会导致索引变得很多。
从原先的计划看,虽然有 ...
mdkii 发表于 2013-6-21 15:03



    第一遍没有输出到文件,使用的时间是
Type      Number      Repetitions Total Time (s) Min Time (s)   Max Time (s)   Arithmetic Mean Geometric Mean Row(s) Fetched Row(s) Output
--------- ----------- ----------- -------------- -------------- -------------- --------------- -------------- -------------- -------------
Statement           1           1     214.110131     214.110131     214.110131      214.110131     214.110131              0             0

* Total Entries:              1
* Total Time:               214.110131 seconds
* Minimum Time:             214.110131 seconds
* Maximum Time:             214.110131 seconds
* Arithmetic Mean Time:     214.110131 seconds
* Geometric Mean Time:      214.110131 seconds
---------------------------------------------
* Timestamp: Fri Jun 21 2013 17:26:13 BEIST


第二遍输出到文件中,文件见附件.



谢谢各位大神:)收起
证券 · 2013-06-21
浏览988
leo_wynleo_wyn商业智能工程师Security
这样创建索引,包含查询和选择的所有列,当然走索引扫描了但我担心这样随便加索引导致表的索引过多,维护困难显示全部
这样创建索引,包含查询和选择的所有列,当然走索引扫描了

但我担心这样随便加索引导致表的索引过多,维护困难收起
系统集成 · 2013-06-21
浏览945
mdkiimdkii软件开发工程师bocn
走index only是可以减少cost。但为专门的select字段定制索引会导致索引变得很多。从原先的计划看,虽然有个表扫描,但不应该需要20S这么久。你可以把db2batch -o p 5的结果发上来看看。显示全部
走index only是可以减少cost。
但为专门的select字段定制索引会导致索引变得很多。
从原先的计划看,虽然有个表扫描,但不应该需要20S这么久。
你可以把db2batch -o p 5的结果发上来看看。收起
银行 · 2013-06-21
浏览938
daolin2005daolin2005数据库管理员某城商行
回复 22# xu5762173 看到IO cost明显下降.    very good update! tks !显示全部
回复 22# xu5762173


看到IO cost明显下降.    very good update! tks !收起
软件开发 · 2013-06-21
浏览945
xu5762173xu5762173数据库管理员Ess
测试环境下,完整SQL也使用到了索引,生产环境,等维护时间再尝试.条件中的列被层层包含使用,看来也得注意显示全部
测试环境下,完整SQL也使用到了索引,

2.jpg




生产环境,等维护时间再尝试.

条件中的列被层层包含使用,看来也得注意收起
证券 · 2013-06-21
浏览1037

提问者

xu5762173
数据库管理员Ess
擅长领域: 服务器数据库存储

问题状态

  • 发布时间:2013-06-19
  • 关注会员:0 人
  • 问题浏览:15198
  • 最近回答:2013-06-27
  • X社区推广