语句 如下 :select s.hydwmc,
       s.slno,
       s.dkrq,
       s.ckmc,
       s.ckqw,
       decode(nvl(f.bzw, '0'), '3', '已出库', '2', '已预订', '在库') zt,
       s.jgryxm,
       f.flno,
       f.flrq,
       s.pc,
       s.jhdj,
       s.cjh,
       s.clhgz,
       s.fdjh,
       s.clys,
       s.scrq
  from (select a.hydwno,
               a.wddwno,
               b.wzno,
               a.slno,
               a.dkrq,
               b.ckqw,
               b.pc,
               b.cjh,
               b.clhgz,
               b.fdjh,
               b.clys,
               b.scrq,
               b.jhdj,
               (select hy.dwmc from hy_wldw hy where hy.dwno = a.hydwno) hydwmc,
               (select ck.ckmc
                  from ckbm ck
                 where ck.ckno = a.ckno
                   and ck.wddwno = a.wddwno) ckmc,
               (select wz.description
                  from wzbm wz
                 where wz.pinpai in
                       (select re.cpcode
                          from wzbm_hywldw_relation re
                         where re.hydwno = a.hydwno)
                   and wz.cpcode = b.wzno) wzmc,
               (select ry.jgryxm || ' ' || ry.sjdh
                  from jr_jgjl_jgry ry
                 where ry.hydwno = a.hydwno) jgryxm
          from ck_sldk a, ck_slmx b
         where a.slno = b.slno
           and ((instr (b.pc, '110126') > 0 ) or (instr (b.cjh, 'LJ12EKR10B4300274') > 0)))s,
       (select a.bzw,
               a.hydwno,
               a.wddwno,
               b.wzno,
               a.flno,
               a.flrq,
               b.ckqw,
               b.pc
          from ck_fldk a, ck_flmx b
         where a.flno = b.flno) f
 where s.pc = f.pc(+)
 order by s.hydwmc, s.pc, s.ckmc, s.ckqw, zt

解决方案 »

  1.   

    1. 老问题了,要优化就不要使用in改写成exists2. 估计楼主的重点在下面这句SQL上
    and ((instr (b.pc, '110126') > 0 )))s,
    这里得看你的子字符串在b.pc和b.cjh的位置,假设是b.pc和b.cjh的第1个字符开始的,那么可以优化。
    为b.pc和b.cjh建立索引,然后使用下面的sql
    and (b.pc like '110126%' or b.cjh like 'LJ12EKR10B4300274%'))s,如果你的子字符串不在b.pc和b.cjh的开始位置,而是固定偏移的位置,也可以优化。
    为b.pc和b.cjh建立两个函数索引,使用的sql同上。如果你的子字符串在b.pc和b.cjh的位置不固定,那么这部分就没有办法优化了,只能走表的全检索。
      

  2.   

    不要显摆那一大坨屎一样的sql...
    你连执行计划都不贴,天才都会看成疯子!