【調優】設計問題還是優化問題?

yellowlee發表於2011-05-24

io100%,定位到一個sql,這個sql在一個1w行的package中,裡面涉及到的一個表在這個package中有大量操作,其中典型的sql如下:

UPDATE CIN_GL_ALOC_RESULT_LINE RL
   SET RL.ALLOC_CONTINUED = 1
WHERE EXISTS
(SELECT 'X'
          FROM CIN_GL_ALOC_RESULT_HEADER RH, CIN_GL_ALOC_RESULT_LINE ARL
         WHERE RH.ALOC_BATCH_ID = ARL.ALOC_BATCH_ID
           AND RH.ALOC_VERSION_ID = :B3
           AND RH.GL_PERIOD = :B2
           AND RH.ALOC_PROCESS_ID = :B1
           AND ARL.SRC_LINK_ID = RL.ALOC_LINE_ID
           AND ARL.SRC_SOURCE = 1)

CIN_GL_ALOC_RESULT_LINE初始1000w+,pkg裡面刪除至幾十w,統計資訊沒有更新,使用exists計劃走了filter 和index rang scan,修改為in後走hash join,ok。

起初只是這樣優化掉,好像是這個經典的In和exists調整,但是需要考慮的是,這個表在什麼時候匯入的,又在哪些業務中被大量刪除,而過程中也有多次查詢,和一些update,這是個財務的程式。年代久遠,無人維護,導致目前不可能得到真正優化。這個應該是在設計之時考慮到,而開發的主導者應該要對應用業務和效率問題有深刻的認識,使之在設計之時就得到解決。

 

 

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

相關文章