1、基于案例学SQL 优化 讲师 梁敬彬 DATAGURU SQL 1 从案例中推导SQL 优化的总体思路与误区 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU http:/基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 梁敬彬,福富软件ITM 产品 线架构 师 及公司 在 聘 数据库 专家,ITPUB版主及社区专家,著 有多 本技术 书籍,其新书 收获,不止Oracle 深 受广大读者喜爱。基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 1 1 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU(count)基于
2、案例学SQL 优化 讲师 梁敬彬 DATAGURU 1.COUNT(*)比COUNT(列)更慢!项目组必须用COUNT(列),不准用COUNT(*),谁用扣谁钱!2.COUNT(*)用不到索引,COUNT(列)才能用到。3.COUNT(*)是统计出全表的记录,是吞吐量的操作,肯定用不到索引。No no no!这些都是谣言,转500 次以上你是会有麻烦的!COUNT 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 点这里试试哪种写法更快?COUNT 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU COUNT(*)COUNT(列)哪 种写法更快?不等价谈何哪种写法更快呢?COUNT
3、 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 点这里了解更深入的信息!COUNT 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 结论:原来优化器里的算法是这么玩的,列的偏移量决定性能,列越靠后,访问的开销越大。由于count(*)的算法与列偏移量 无关,所以count(*)最快,count(最后列)最慢。结论:更 深 入 信息 的 结果图示 这个结论对我们开发设计,可是有启发哦,你要把不常访问的列,放在什么位置?基于案例学SQL 优化 讲师 梁敬彬 DATAGURU(SQL)基于案例学SQL 优化 讲师 梁敬彬 DATAGURU?基于案例学SQL 优化 讲师 梁敬彬 DA
4、TAGURU 这些优化观点,你也传播出去了吗?基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 和表连接顺序有关的流言蜚语 与表条件顺序有关的以讹传讹 SQL 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 结论:基于RBO 或许是 如此,基于CBO 时 代,早 就不是 如此了,过时 了!SQL 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU(in exists)基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 不知道这些说法被转了多少次,我只能为你祈祷平安了!基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 点 这里看看10g环境的情况 IN EXIST(1
5、0g)基于案例学SQL 优化 讲师 梁敬彬 DATAGURU IN EXIST(11g)点这里瞧瞧11g环境的情况 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU IN EXIST 一般来说,anti 的反连接算 法比filter 更高效,但是 在10g 时,Oracle 的这个算法不完善,必须要 制定非 空,才 可以让not in 用anti 算法。在11g 的时候,这个情 况已经 改变了,无论not in 还是not exists,无论是否列为空,都可以走 到Oracle 比较先进 高效的anti 反连 接算法。结论:基于案例学SQL 优化 讲师 梁敬彬 DATAGURU“网上流传
6、的名人名言80%以上都是假的”亚拉 伯 罕 林肯 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 1 2 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 1.听听和全局临时表有关的故事 2.讲述分区清理带给我们的好处 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 3.体会分区消除带来的性能提升 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 1.避免SQL 中的函数调用有啥好处 请看与开发中少做事相关的案例 说明!基于案例学SQL 优化 讲师 梁敬彬
7、 DATAGURU 2.减少SQL中的函数调用有何思路 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 3.集合写法能给性能提升多少 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 4.只取你所需的列,访问视图变更 快了 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 5.只取你所需的列,索引读无需回 表了 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 6.只取你所需的列,表连接访问提 速了 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 7.催人泪下,拖垮生产系统的超长 慢SQL 9.难以置信,让你不相信自己眼睛 的SQL 8.出乎意料,SQL 优
8、化 改 写 的 飞 跃 性 想 法 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 1 3 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 1.从某出账相关案例谈索引与更新 0.35+0.48+0.21+0.34+0.36+15 2+0.67+1+0.45+0.72+0.74 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 2.建索引引发锁表带来的悲惨故 事 3.建索引导致排序引发的性能风波 基于案例学S
9、QL 优化 讲师 梁敬彬 DATAGURU 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 还以为建分区一定会更快,真 没想到 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 统计条数语句之谁是速度之王 从单车到飞船的性能优化之旅 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 1 4 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU SQL 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 没想到,SQL 故 事 的 背 后 还 引 发 更 多 故 事 SQL 基于案例学SQL 优化 讲师 梁敬彬 D
10、ATAGURU 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 1 5 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU SQL 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU insert all into ljb_tmp_transaction into ljb_tmp_session select*from dba_objects;1.Insert 多表插入的玄与机 insert into ljb_tmp_transaction as select*from dba_objects;insert into jb_tmp_session as select*from
11、dba_objects;SQL 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 2.max 及min 写法的分与合 select min(object_id),max(object_id)from t;select max,min from(select max(object_id)max from t)a,(select min(object_id)min from t)b;SQL select max(object_id)from t;select min(object_id)from t;select min(object_id),max(object_id)from t;基于案
12、例学SQL 优化 讲师 梁敬彬 DATAGURU 3.in 和写法之间的同与异 SQL 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 4.count 列和*结论的对与错 SQL 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU SQL 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 明白了吧?别买鱼了,就用冰箱里的牛肉来做美味晚餐吧。基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 1 6 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU)基于案例学SQL 优化 讲师 梁敬彬 DATAGURU)基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 第一周课
13、程到此结束,谢谢大家!基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 咦,老师,本周课程上完 了?嗯,是的,上完了,有收 获吧?谢谢,收 获很 大!不过 您不 是说总 体 思路 和误区 吗,怎 么只说 误 区就 结束了?你想要听总体思路啊?是啊!你 把误区都纠正了,总体 思路不 就出来 了吗??基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 不就是这个吗,请看:SQL 基于案例学SQL 优化 讲师 梁敬彬 DATAGURU 哦,我明白了,原来如此 啊。其实就是知识+意识,从下 周开始,我们 开始围 绕各种 案例,讲述优 化中所涉及的各种知识和所 具备的 各种意 识吧。本周 的 课程或 许 有 些 同学还无法完全理解明白,不过没 关系,能有个 印象 就 很好了,相信 经过一 段时间 的学习后,回头再回顾老师 的课堂 视频,试验老 师所提 供的各 种脚本,大家 一定会豁然开朗的。谢谢老师!基于案例学SQL 优化 讲师 梁敬彬 DATAGURU Dataguru http:/DATAGURU 专业数据分析网站 FAQ 时间 65