为什么要改写?
SQL写法灵活多变,实现相同的业务逻辑,可以用不同的写法. 不同写法之间的效率可能相差几百甚至上千倍.改写的目的,就是要提高SQL执行效率!
为了让开发人员和DBA掌握基本的SQL写法,避免使用低效写法,特举办SQL写法与改写第一期基础与进阶培训班. 如果大家有深入学习的需求,接下来还可以参加下一期进阶与提高的课程.
不同数据库的SQL写法虽略有不同,但是基本的思路是想通的, 掌握了oracle数据库的规律,对其他数据库也是大有帮助的.
培训讲师:老虎刘(刘永甫) 讲师介绍请参考之前的公众号文章
培训对象:Oracle DBA及开发人员(需要有一定的SQL基础)
培训时间:4小时
2020.06.20(星期六) 下午14:00~18:00
课前统一安排练习题,课后统一在微信群答疑
培训方式:腾讯会议,桌面共享方式;课后发放录屏视频
培训费用:400元/人,报名前50人可享7折优惠; 报名50-100按8折优惠; 100名以上优惠条件: 2人组团8折,3人及以上组团7折; 之前参加过线下培训或索引线上专题培训,7折优惠.
报名方法:加本人业务微信 ora_service , 注明:真实姓名、所在公司 。培训费用直接微信转账。
培训提纲:
本期主要讲解的内容如下:
(基本的sql写法这里不过多介绍,这里主要讲解跟性能密切相关的写法)
常见的低效SQL写法:
字段上使用函数(包括一种看不见的函数)
to_char(createdate,'yyyy-mm-dd') =:b1
Trunc(business_date)=trunc(sysdate)
nvl(id1,id2)=:b1
varchar_col=:num_var
字段上做运算
salary*1.2<=10000
created-1/24>sysdate
like 模糊查询
col like '%'||:b1 ;
col like '%'||:b1||'%' instr(col,:b1) >0 ;
(:b1 is null or c1=:b1) and (:b2 is null or c2=:b2)
and (:b3 is null or c3=:b3) ....;
这些sql为什么低效?
怎么改写?
TOP N与分页查询
分页查询的本质
常见的低效写法
高效写法3种
高效与低效差在哪里?
or与半连接
主查询结果集大时,效率较差
两种情况,两种改写思路
等价改写,很简单,别被一些文章的复杂低效改写方法误导了
非分析函数去重写法
几种常见写法
部分写法不但性能不佳,逻辑上可能也不严谨
分析函数的去重原理
为什么分析函数的写法一般比较高效?
标量子查询及相关
什么是标量子查询?
什么时候会有严重性能问题?
自定义函数调用
where 部分的关联子查询
大表重复多次扫描
低效group by写法
使用分区表不考虑分区字段
并行写法
11g和10g在写法上的区别
12c的改进
并行度的选择
select的用法
DDL的用法
DML的用法
各种连接方式的写法,异同点以及注意事项
内连接 : inner join
外连接 : left join (right join)
on 条件与where 条件的区别
两种写法
外连接怎么变成了内连接?
半连接 :
in/exists , 有时需要改写成inner join;
改写等价性需要注意
反连接 :
not in/not exists ,两者的区别
为什么不建议使用not in?
可以改写成外关联
全连接 :
merge 改写成CTAS
网上/书上一些不等价或是低效的改写点评
通过这次培训,我们要把上面这些情况的下面两个问题搞清楚:
为什么这些写法是低效的?
为什么改写后的方法是高效的?
下期预告: 进阶与提高
merge 写法与示例
其他分析函数介绍与实战
row by row游标处理与直接表关联
区间检索的终极写法
CTE(with)的几种用途,什么时候做MATERIALIZE? 写法与示例
带connect by组织机构查询的建议
pivot/unpivot用法实战
model用法示例
in 列表元素过多改写建议 3种方法
并发处理,数据分割方法
导出大表记录到文本文件
......
实战案例分析
网上/书上案例点评
索引专题培训视频如有需要,可以联系本人(微信 ora_service)




