預告: 下一次培訓主要面向DBA, 講一下ora工具的用法與用途,大概須要一天時間. java
第一期的SQL寫法與改寫培訓已通過去近5個月,相信不少學員已經掌握了大部分精髓,課後你們在微信羣又分享和討論了一些案例,加深了培訓內容的理解。第一期側重點是OLTP系統的SQL。android
個人業務不是隻有培訓,對客戶生產系統作性能分析和優化是個人主業。多年大量客戶生產系統的優化過程,包含了大量的經典案例,不少學員但願我可以把這些案例體如今培訓中。其實在以前的幾個理論專題的培訓中, 已經加入了大量的生產真實案例。爲了可以讓你們更好的理解這些綜合案例,第二期的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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。