详细大纲版: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源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索