证券

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

图中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.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

查看其它 30 个回答xu5762173的回答

xu5762173xu5762173数据库管理员Ess
如果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
浏览1082

回答者

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

xu5762173 最近回答过的问题

回答状态

  • 发布时间:2013-06-27
  • 关注会员:0 人
  • 回答浏览:1082
  • X社区推广