金融其它

db2 function的效率问题求救

今天生产上遇到一个非常诡异的问题具体如下:select * from(select ipagetable.*,rownum as ipagerownum from (Select a.cifno, a.cifname, a.appno, a.loantype, a.loantime, a.assuretype, a.loanamt, a.appstate, a.traceno,a.appstep,getappidea(a.appno,a.appstep,a....显示全部
今天生产上遇到一个非常诡异的问题具体如下:
select * from(select ipagetable.*,rownum as ipagerownum from (Select a.cifno, a.cifname, a.appno, a.loantype, a.loantime, a.assuretype, a.loanamt, a.appstate, a.traceno,a.appstep,getappidea(a.appno,a.appstep,a.traceno,:L0 ), a.TermMonth,a.TermDay,a.adscbrno,a.apptype,a.popeflag,a.cifgrade,GETAppStepFlage(:L1 ,a.appstep), a.confsum, a.creditName,a.timelist,curtotalAmt ,a.creditNo  from cr_loanapp a where  a.appstate in (:L2 ,:L3 ) and getbatchflag(loantype)!=:L4 and a.apptype  in( :L5 ,:L6 ) and a.loantype in (:L7 ,:L8 ) and  a.adscbrno in (SELECT brno from bctl  START WITH BRNO =:L9 CONNECT BY PRIOR BRNO =  UPONEORG ) and ( a.Appstep = :L10 or  a.Appstep=:L11 ) order by a.putdate, a.adscbrno)ipagetable) where ipagerownum>:L12 and ipagerownum <=:L13
这个sql 从监控来看执行非常的慢

select * from(select ipagetable.*,rownum as ipagerownum from (Select a.cifno, a.cifname, a.appno, a.loantype, a.loantime, a.assuretype, a.loanamt, a.appstate, a.traceno,a.appstep,getappidea(a.appno,a.appstep,a.traceno,:L0 ), a.TermMonth,a.TermDay,a.adscbrno,a.apptype,a.popeflag,a.cifgrade,GETAppStepFlage(:L1 ,a.appstep), a.confsum, a.creditName,a.timelist,curtotalAmt ,a.creditNo  from cr_loanapp a where  a.appstate in (:L2 ,:L3 ) and getbatchflag(loantype)!=:L4 and a.apptype  in( :L5 ,:L6 ) and a.loantype in (:L7 ,:L8 ) and  a.adscbrno in (SELECT brno from bctl  START WITH BRNO =:L9 CONNECT BY PRIOR BRNO =  UPONEORG ) and ( a.Appstep = :L10 or  a.Appstep=:L11 ) order by a.putdate, a.adscbrno)ipagetable) where ipagerownum>:L12 and ipagerownum <=:L13
and getbatchflag(loantype)!=:L4  删除之后,执行的效率非常快
[/i]
[i]

疑惑:
db2的那个一个参数能影到function的执行效率?
为什么在数据库重启之后,两个SQL的执行效率完全一样呢
在线等待~~~~收起
参与4

查看其它 2 个回答陈辉的回答

陈辉陈辉研发工程师IBM
建议你:1.简化一下例子,可以用一个非常简单的语句测一下getbatchflag(loantype)!=:L4的性能。2.SQL语句不变,换个其他的function,看看整个SQL语句的性能是否变化。3.打印出执行计划,重点看下function部分的cost,包括重启前的和重启后的。
软件开发 · 2012-11-08
浏览567

回答者

陈辉
研发工程师IBM
擅长领域: 数据库

陈辉 最近回答过的问题

回答状态

  • 发布时间:2012-11-08
  • 关注会员:1 人
  • 回答浏览:567
  • X社区推广