一個SQL優化

mahe0207發表於2014-12-12
把where條件改寫了

  1. (
  2.   (
  3.     (
  4.      (select aco.iauthcontrol 
  5.       from BG_AUTHCONTROLOBJ aco 
  6.       where aco.cobjcode = \'105\' and 
  7.             aco.corgnid = {CORGNID:\'\'}) = 0
  8.     )
  9.     or
  10.     (select count(cguid) 
  11.      from BG_AUTHCONTROLOBJ aco 
  12.      where aco.cobjcode = \'105\' and 
  13.             aco.corgnid = {CORGNID:\'\'}) = 0
  14.   )
  15.   or
  16.   (
  17.    (select aco.iauthcontrol 
  18.     from BG_AUTHCONTROLOBJ aco 
  19.     where aco.cobjcode = \'105\' and 
  20.           aco.corgnid = {CORGNID:\'\'}) = 1 and
  21.           (
  22.            ( 
  23.             (select akj.iauthcontrol 
  24.              from BG_AUTHASSIGNKJ akj 
  25.              where akj.carchiveguid ={cBGCaliberKey3GUID:\'\'} and 
  26.                    akj.corganguid = {CORGNID:\'\'}) = 0
  27.              or
  28.              (select count(cguid) 
  29.               from BG_AUTHASSIGNKJ akj 
  30.               where akj.carchiveguid ={cBGCaliberKey3GUID:\'\'} and 
  31.                     akj.corganguid = {CORGNID:\'\'}) = 0
  32.            )
  33.            or
  34.            (
  35.             (select akj.iauthcontrol 
  36.              from BG_AUTHASSIGNKJ akj 
  37.              where akj.carchiveguid ={cBGCaliberKey3GUID:\'\'} and 
  38.                    akj.corganguid = {CORGNID:\'\'}) =and 
  39.                    b1.cguid in ( select distinct babg.cbillcguid 
  40.                                  from BG_AUTHASSIGNBG babg
  41.                                  where babg.cuserguid = {cCreatorGUID} and 
  42.                                        babg.corganguid = {CORGNID:\'\'and 
  43.                                        babg.icontrol =and 
  44.                                        babg.cobjguid = (select baco.cguid
  45.                                                         from BG_AUTHCONTROLOBJ baco
  46.                                                         where baco.cobjcode = \'105\' and 
  47.                                                               baco.corgnid = {CORGNID:\'\'})
  48.                                 )
  49.              )
  50.             )
  51.   )
  52. )
改用case when
  1. (case (select aco.iauthcontrol 
  2.        from BG_AUTHCONTROLOBJ aco 
  3.        where aco.cobjcode = \'105\' and 
  4.               aco.corgnid = {CORGNID:\'\'})
  5.  when 1 then (case (select akj.iauthcontrol 
  6.                     from BG_AUTHASSIGNKJ akj 
  7.                     where akj.carchiveguid ={eleType:\'\'} and 
  8.                           akj.corganguid = {CORGNID:\'\'})
  9.               when 1 then (case when c.cguid in (select distinct babg.cbillcguid 
  10.                                                  from BG_AUTHASSIGNBG babg
  11.                                                  where babg.cuserguid = {cCreatorGUID} and 
  12.                                                        babg.corganguid = {CORGNID:\'\'and 
  13.                                                        babg.icontrol =and 
  14.                                                        babg.cobjguid = (select baco.cguid
  15.                                                                         from BG_AUTHCONTROLOBJ baco
  16.                                                                         where baco.cobjcode = \'105\' and 
  17.                                                                               baco.corgnid = {CORGNID:\'\'}) then 1
  18.                             else 0 end
  19.                            )
  20.               else 1 end
  21.              )
  22.  else 1 end
  23. )=1

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29437301/viewspace-1365754/,如需轉載,請註明出處,否則將追究法律責任。

相關文章