预告: 下一次培训主要面向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源创计划”,欢迎正在阅读的你也加入,一块儿分享。