詳細大綱版:oracle優化培訓之 第二期

    預告: 下一次培訓主要面向DBA, 講一下ora工具的用法與用途,大概須要一天時間.    java


    第一期的SQL寫法與改寫培訓已通過去近5個月,相信不少學員已經掌握了大部分精髓,課後你們在微信羣又分享和討論了一些案例,加深了培訓內容的理解。第一期側重點是OLTP系統的SQLandroid

    

    個人業務不是隻有培訓,對客戶生產系統作性能分析和優化是個人主業多年大量客戶生產系統的優化過程,包含了大量的經典案例,不少學員但願我可以把這些案例體如今培訓中。其實在以前的幾個理論專題的培訓中, 已經加入了大量的生產真實案例爲了可以讓你們更好的理解這些綜合案例,第二期的SQL寫法與改寫(側重點是OLAP系統的SQL)培訓就要先給你們講完ios


    索引專題(兩天線上)+SQL寫法與改寫專題(兩期線上),基本上就是SQL優化的精華了(之後還會增長hint專題)web


培訓講師:老虎劉(劉永甫) 講師介紹請參考以前的公衆號文章sql


培訓對象:Oracle DBA及開發人員(須要有必定的SQL基礎)
shell


培訓時間:4小時性能優化

2020.11.08(星期日) 08:30~12:30微信

課前統一安排練習題,課後統一在微信羣答疑
oracle


培訓方式騰訊會議,桌面共享方式;課後發放錄屏視頻app


培訓費用:500元/人,以前參加過培訓(包括購買培訓視頻)的學員8折優惠 新學員11月6日24時前報名,享9折優惠課後購買視頻,無優惠。計劃報名人數100人.


報名方法加本人業務微信 ora_service , 註明:真實姓名、所在公司 。培訓費用直接微信轉帳


培訓提綱


區間檢索: 

        嚴格區間檢索,網上介紹的優化方法有什麼問題:

        使用降序索引又是什麼問題?

        匹配不到區間時,執行效率爲何會那麼差?

        學習終極寫法的同時,還能深刻理解索引掃描


關聯更新:

        update的錯誤寫法,update的正確寫法,update的高效寫法,高效改進寫法; merge語法介紹,merge寫法,merge改進寫法, merge 修改關聯字段的寫法; CTAS實現關聯更新的寫法


分析函數:

        row_number/rank/dense_rank的區別和用途; 用dense_rank優化改寫生產案例;ratio_to_report用法; lag/lead用法介紹及幾個寫法需求的實現; sum分析函數帶order by的注意事項; 用lag/sum/dense_rank共同實現的寫法綜合案例; dense_rank keep及注意事項; first_value/last_value實現相同邏輯;


with as的幾種用途及實戰案例:

        造測試數據

        提升代碼可讀性

        materialize --生產案例

        遞歸

        內嵌函數


connect by層級查詢:

        自頂向下查/自底向上查

        展開連續區間寫法

        拆分逗號分隔字符串爲多行

        拆分表字段字符分隔字符串的兩種方法

        順便講一下合併:

            多行記錄合併爲一行listagg

            listagg 19c前如何去重?

        配合使用in仍是使用exists?--生產案例

        不能push_pred怎麼辦?--生產案例

        分頁查詢不能作nested loop被驅動怎麼辦?--生產案例

        被強制使用低效view merge怎麼辦?--生產案例


批處理(row by row)仍是單SQL(set based):

        一個包含多個sql的loop循環存儲過程,用一條sql實現


in 列表元素過多:

        in (1,2,3,4) / in (1,3,4,6,8) / in (1,......,1000) 這類sql,使用綁定變量沒有意義,用兩種方法解決這種問題


大數據導出到文本文件:

        用網上提供的工具? 用原始的spool ? 仍是java代碼寫文件? 

        直接用oracle提供的utl_file作成函數, 並行快速導出

        能夠在應用代碼調用,也可直接shell腳本調用


文本文件導入到表:

        sqlldr?   外部表?  


pivot行轉列:

        不會行轉列,屢次union all,效率低下, 生產案例真實感覺一下

        不用pivot, case when也能實現相同功能


unpivot列轉行:

        不會列轉行,屢次union all,效率不好, 生產案例給你練習,看看效果

        多列轉行, 書上介紹的方法很複雜, 不要被誤導


Model:

        model寫法比較偏門, 給兩個實際需求案例瞭解一些就好了


綜合案例分析:

        1. 網上流傳的計算哪一個時間段在線人數最多?再引伸一下,把具體的時間點列出來


        2. unpivot 實現組合統計: pc平臺購買,ios平臺購買,Android平臺購買,pc+ios,pc+android,ios+andriod,pc+ios+andriod不一樣組合的統計


        3. 生產案例:SQL使用or,大結果集作filter, 25秒; 改寫後5毫秒之內; 能不能不改寫達到效率提升?  用到上期寫法知識點


        4. 生產案例:txn_dt||txn_tm>=:1 and txn_dt||txn_tm<=:2 這種寫法的常規改寫?  結合生產實際狀況的實際改寫.


        5. 一個SQL由於結果集錯誤拿出來討論,能夠有多種優化寫法,提升效率的同時, 原來的結果集錯誤問題也能夠避免.       



    如需瞭解以前的線上培訓內容, 請點擊-> 

     SQL寫法與改寫第一期:  oracle優化線上培訓之SQL寫法與改寫 

     索引專題培訓:  索引專題培訓,不止索引,不止Oracle

     公益培訓  :  公益培訓-oracle性能優化工具與實戰培訓報名通知


線上培訓內容不會重複講,若有須要,請加上面微信聯繫方式購買


本文分享自微信公衆號 - 老虎劉談oracle性能優化(sql_tigerliu)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索