数据库语句优化

写了一个批量插入的语句,具体格式为select xxyyfrom   a left join b on a.xx = b.xx left join c on b.jj = c.kk where a.yy in('','','')and exists(        select 1 from (xx...))为什么在客户端执行的时候报超时,用脚本执行时一直卡着...显示全部

写了一个批量插入的语句,具体格式为

select

xx

yy

from   a left join b on a.xx = b.xx left join c on b.jj = c.kk

where a.yy in('','','')

and exists(

        select 1 from (

xx...

)

)

为什么在客户端执行的时候报超时,用脚本执行时一直卡着不动?望大神解答

收起
参与15

查看其它 2 个回答仙道彰的回答

仙道彰仙道彰数据库开发工程师花旗集团

1.可以试着将where里面的条件放在From 和 jion 后面的数据集里面;如

from a  的可以改写成 from ( select * from a where a.yy in (\'\',\'\',\'\'))  as a ,这样写的好处是可以减小外连接后的数据集的大小(笛卡尔积)的大小 ,类似这种都可以这样子改写;

2.检查是否建立了索引,尤其是关联条件涉及到的栏位上是否建有索引;如果外层select 的栏位也是高频栏位的话也可以建立下索引;

3.辅助操作: reorg下个table 重组下各表,同时可rustat下个表更新下各表的统计信息有利于优化器的决策;

语法: db2 reorg table xxx.xxxx;

db2 rustat table xxx.xxxx with indexes all ;

互联网服务 · 2017-04-25
浏览1726

回答者

仙道彰
数据库开发工程师花旗集团

仙道彰 最近回答过的问题

回答状态

  • 发布时间:2017-04-25
  • 关注会员:4 人
  • 回答浏览:1726
  • X社区推广