多表連線SQL優化如何處理

tolywang發表於2012-01-15
select    a.inst_id  ,    count(*) from  
(   
   SELECT       L.USER_ID,   R.RESP_APPL_ID,  R.RESPONSIBILITY_ID, F.AUDSID,S.SID,  
               USR.USER_NAME, RSP.RESPONSIBILITY_NAME,  FRM.USER_FORM_NAME, S.INST_ID   
     FROM     FND_RESPONSIBILITY_TL    RSP,     --  3188   rows  
          FND_FORM_TL     FRM,                      --   8992   
          FND_USER USR,                             --   39400   
          FND_LOGINS L,                              --   510000  
          FND_LOGIN_RESPONSIBILITIES R,    ---  280000  
          FND_LOGIN_RESP_FORMS F,            ---   1120000  
          GV$SESSION S                                    ---  VIEW    300  
    WHERE     R.LOGIN_ID = F.LOGIN_ID  
          AND R.LOGIN_RESP_ID = F.LOGIN_RESP_ID     --      R, F   表中   LOGIN_ID , LOGIN_RESP_ID  聯合索引
          AND L.LOGIN_ID = R.LOGIN_ID                      ---  L  表中 LOGIN_ID  唯一索引   
          AND L.END_TIME IS NULL                               ----- L  表中 END_TIME is NULL  為 38萬   
          AND R.END_TIME IS NULL                               ----- R  表中 END_TIME is NULL  為 10 萬   
          AND F.END_TIME IS NULL                              ----- F 表中 END_TIME is NULL  為 12 萬   
          AND L.USER_ID = USR.USER_ID                     --    L, USR  表中 USER_ID  存在索引 , USR中是唯一的 。
          AND R.RESPONSIBILITY_ID = RSP.RESPONSIBILITY_ID     --  R 中RESPONSIBILITY_ID 無索引(只有56個不同值),RESP_APPL_ID無索引
          AND R.RESP_APPL_ID = RSP.APPLICATION_ID                 ---(只有16個不同值) , RSP 中 APPLICATION_ID與RESPONSIBILITY_ID 聯合索引         
          AND RSP.LANGUAGE = USERENV ('LANG')
          AND F.FORM_APPL_ID = FRM.APPLICATION_ID   ---  F 表FORM_APPL_ID 與FORM_ID 聯合索引  
          AND F.FORM_ID = FRM.FORM_ID                      --- FRM 表中 FORM_APPL_ID 與FORM_ID 聯合唯一索引   
          AND FRM.LANGUAGE = USERENV ('LANG')     
          AND F.AUDSID = S.AUDSID                             ---  F 表中AUDSID 有索引         
)  a      
group by  a.inst_id  ;

其中中間的select 是一個view,  這裡把它展開 。

這種SQL 優化如何下手  ?   Index scan  , full table scan ,   表連線 , 還是Cost  ??  

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

相關文章