Oracle SQL優化了解業務多重要

maohaiqing0304發表於2015-06-04


標題:Oracle SQL優化了解業務多重要

作者:lōττéry©版權所有[文章允許轉載,但必須以連結方式註明源地址,否則追究法律責任.]



註釋: 
  很少有dba全知曉整個專案的所有業務,不過sql優化 不懂sql 具體業務 可能就成了問題;


我們來看看如下情況 從業務上優化哈~
  
     (報表)下載功能:
      一般業務的下載功能,再避免影響記憶體溢位、都可能會考慮select .. where rownum<200, 每200條一次追加到excel,多次呼叫sql 實現將全部資料寫到excel;
      
     遐想:
     當(select ... 表比較多 where rownum<200 執行計劃都是全掃,且篩選後量較大)情況出現時,如上的多次呼叫方式就存在很嚴重的瓶頸;
     
     如上所說的情況,如果是您的話,您會怎麼解決捏~

     
     ********************************************************************************************************************************************
     分析:
     如上情況的sql 單獨去優化很艱難,所以瞭解下業務,最終目的是需要將select ... 多表條件..噠噠噠..過濾後所有資料匯入到excel表
     
     瓶頸: 當量較大時,考慮到應用記憶體溢位問題,所以需要多次呼叫(較慢的大sql = 120s) ,以每小量資料一步步匯入到最終excel中 ;
              
     方案: 由於最終是全量,所有可以將多次呼叫的大sql 改為一次呼叫讀寫到資料庫中的臨時表;再一次以200資料取臨時表資料;
     語句: create table t as select  ... 多表條件..噠噠噠..過濾後所有資料 ;
               select * from t where rownum<200;多次呼叫

     總結: 由於知道業務上是需要sql資料最終全量,所以巧用臨時表屬性,將多次呼叫 較慢的大sql改為一次呼叫;
                且單次執行較慢sql =120s = create 臨時表時間,避免應用記憶體溢位的多次呼叫臨時表時間就及其短暫了.. 
                所以...  SQL優化了解業務多重要。
           
 

  【源於本人筆記】 若有書寫錯誤,表達錯誤,請指正...


此條目發表在   SQL、SQL優化篇  分類目錄。將固定連線加入收藏夾。



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

相關文章