第 1 周 从案例中推导 SQL 优 化的总体思路与误区
法律声明 声明 本视频和幻灯片为炼数成金网络课程的教学资料, 所有资料只能在课程内使用, 丌得在课程以外范围散播, 违者将可能被追究法律和经济责任 课程详情访问炼数成金培训网站 http://edu.dataguru.cn
关于老师 梁敬彬, 福富软件 ITM 产品线架构师及公司在聘数据库专家, ITPUB 版主及社区专家, 著有多本技术书籍, 其新书 收获, 不止 Oracle 深受广大读者喜爱
当前课程进度
第 1 周课程总览之 1
缺乏对讹传的辨知力 (count 讹传 )
关于 COUNT 的对话 1. COUNT(*) 比 COUNT( 列 ) 更慢! 项目组必须用 COUNT( 列 ), 不准用 COUNT(*), 谁用扣谁钱! 2. COUNT(*) 用不到索引,COUNT( 列 ) 才能用到 3. COUNT(*) 是统计出全表的记录, 是吞吐量的操作, 肯定用不到索引 No no no! 这些都是谣言, 转 500 次以上你是会有麻烦的!
COUNT 对话正确不否的试验证明 点这里试试哪种写法更快?
COUNT 对话正确不否结论 COUNT(*) 哪种写法更快? COUNT( 列 ) 不等价谈何哪种写法更快呢?
COUNT 对话更深入的理解 点这里了解更深入的信息!
结论 : 更深入信息的结果图示 结论 : 原来优化器里的算法是这么玩的, 列的偏移量决定性能, 列越靠后, 访问的开销越大 由于 count(*) 的算法与列偏移量无关, 所以 count(*) 最快, count( 最后列 ) 最慢 这个结论对我们开发设计, 可是有启发哦, 你要把不常访问的列, 放在什么位置?
缺乏对讹传的辨知力 (SQL 编写顺序讹传 )
?
这些优化观点, 你也传播出去了吗?
关于 SQL 书写顺序的试验证明 和表连接顺序有关的流言蜚语 与表条件顺序有关的以讹传讹
关于 SQL 书写顺序的试验结论 结论 : 基于 RBO 或许是如此, 基于 CBO 时代, 早就不是如此了, 过时了!
缺乏对讹传的辨知力 (in 不 exists 之争 )
不知道这些说法被转了多少次, 我只能为你祈祷平安了!
关于 IN 不 EXIST 的试验证明 (10g) 点这里看看 10g 环境的情况
关于 IN 不 EXIST 的试验证明 (11g) 点这里瞧瞧 11g 环境的情况
关于 IN 不 EXIST 的试验结论 结论 : 一般来说,anti 的反连接算法比 filter 更高效, 但是在 10g 时,Oracle 的这个算法不完善, 必须要制定非空, 才可以让 not in 用 anti 算法 在 11g 的时候, 这个情况已经改变了, 无论 not in 还是 not exists, 无论是否列为空, 都可以走到 Oracle 比较先进高效的 anti 反连接算法
最精彩的名人名言 网上流传的名人名言 80% 以上都是假的 亚拉伯罕 林肯
第 1 周课程总览之 2
丌具备少做事意识 ( 设计中的少做事 ) 1. 听听和全局临时表有关的故事 2. 讲述分区清理带给我们的好处
丌具备少做事意识 ( 设计中的少做事 ) 3. 体会分区消除带来的性能提升
丌具备少做事意识 ( 开发中的少做事 ) 请看与开发中少做事相关的案例说明! 1. 避免 SQL 中的函数调用有啥好处
丌具备少做事意识 ( 开发中的少做事 ) 2. 减少 SQL 中的函数调用有何思路
丌具备少做事意识 ( 开发中的少做事 ) 3. 集合写法能给性能提升多少
丌具备少做事意识 ( 开发中的少做事 ) 4. 只取你所需的列, 访问视图变更快了
丌具备少做事意识 ( 开发中的少做事 ) 5. 只取你所需的列, 索引读无需回表了
丌具备少做事意识 ( 开发中的少做事 ) 6. 只取你所需的列, 表连接访问提速了
丌具备少做事意识 ( 开发中的少做事 ) 7. 催人泪下, 拖垮生产系统的超长慢 SQL 8. 出乎意料,SQL 优化改写的飞跃性想法 9. 难以置信, 让你不相信自己眼睛的 SQL
第 1 周课程总览之 3
丌会依据场景选择技术 ( 关于索引坏处考虑 ) 1. 从某出账相关案例谈索引与更新 0.35+0.48+0.21+0.34+0.36+15 > 2+0.67+1+0.45+0.72+0.74
丌会依据场景选择技术 ( 关于索引坏处考虑 ) 2. 建索引引发锁表带来的悲惨故事 3. 建索引导致排序引发的性能风波
丌会依据场景选择技术 ( 说说分区更慢的场景 ) 还以为建分区一定会更快, 真没想到
丌会依据场景选择技术 ( 场景选择的经典案例 ) 统计条数语句之谁是速度之王 从单车到飞船的性能优化之旅
第 1 周课程总览之 4
未考虑将需求最小化 ( 催人泪下的 SQL 续集 )
请看 SQL 需求最小化的相关例子! 没想到,SQL 故事的背后还引发更多故事
未考虑将需求最小化 ( 考虑需求中多余之处 )
第 1 周课程总览之 5
忽略 SQL 改造等价性 ( 看似等价其实丌等 )
请看 SQL 写法丌等价的相关例子 1. Insert 多表插入的玄与机 insert all into ljb_tmp_transaction into ljb_tmp_session select * from dba_objects; insert into ljb_tmp_transaction as select * from dba_objects; insert into jb_tmp_session as select * from dba_objects;
请看 SQL 写法丌等价的相关例子 2. max 及 min 写法的分与合 select min(object_id), max(object_id) from t; select max(object_id) from t; select min(object_id) from t; 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 写法丌等价的相关例子 3. in 和 >< 写法之间的同与异
请看 SQL 写法丌等价的相关例子 4. count 列和 * 结论的对与错
忽略 SQL 改造等价性 ( 看似丌等价其实等价 )
看似丌等价其实等价的例子 别买鱼了, 就用冰箱里的牛肉来做美味晚餐吧 明白了吧?
第 1 周课程总览之 6
丌识需求乃顶级优化 ( 需求优化 )
丌识需求乃顶级优化 ( 相关问答 )
谢谢大家 第一周课程到此结束, 谢谢大家!
只上了 SQL 误区 漏了 总体思路 吗 咦, 老师, 本周课程上完了? 嗯, 是的, 上完了, 有收获吧? 谢谢, 收获很大! 不过您不是说总体思路和误区吗, 怎么只说误区就结束了? 你想要听总体思路啊? 是啊! 你把误区都纠正了, 总体思路不就出来了吗????
SQL 优化的总体思路 不就是这个吗, 请看 :
豁然开朗 哦, 我明白了, 原来如此啊 其实就是知识 + 意识, 从下周开始, 我们开始围绕各种案例, 讲述优化中所涉及的各种知识和所具备的各种意识吧 本周的课程或许有些同学还无法完全理解明白, 不过没关系, 能有个印象就很好了, 相信经过一段时间的学习后, 回头再回顾老师的课堂视频, 试验老师所提供的各种脚本, 大家一定会豁然开朗的 谢谢老师!
炼数成金逆向收费式网络课程 Dataguru( 炼数成金 ) 是与业数据分析网站, 提供教育, 媒体, 内容, 社区, 出版, 数据分析业务等服务 我们的课程采用新兴的互联网教育形式, 独创地发展了逆向收费式网络培训课程模式 既继承传统教育重学习氛围, 重竞争压力的特点, 同时又发挥互联网的威力打破时空限制, 把天南地北志同道合的朋友组织在一起交流学习, 使到原先孤立的学习个体组合成有组织的探索力量 并丏把原先动辄成千上万的学习成本, 直线下降至百元范围, 造福大众 我们的目标是 : 低成本传播高价值知识, 构架中国第一的网上知识流转阵地 关于逆向收费式网络的详情, 请看我们的培训网站 http://edu.dataguru.cn
FAQ 时间 DATAGURU 专业数据分析网站 65