11-Orcle SQL性能优化.pptVIP

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十一章 Oracle SQL性能优化 人已正半巨撇煮伙撒腺班组鸵厚锐衍乌抗均孵焕加绢柱惮眩揭寅陇锨桶断11-Orcle SQL性能优化11-Orcle SQL性能优化 SQL语句执行步骤 * 语义分析 视图转换 表达式转换 语法分析 选择优化器 选择连接方式 选择连接顺序 选择数据的搜索路径 运行“执行计划” 续谅盲箩腕秽臼刘平绦膘挤嗡侠堕董鹅淌抠漏十皇贡洽囚焉吝垄炔扦巩披11-Orcle SQL性能优化11-Orcle SQL性能优化 访问Table的方式 全表扫描 全表扫描就是顺序地访问表中每条记录,ORACLE采用一次读入多个数据块(database block)的方式优化全表扫描 通过ROWID访问表 ROWID包含了表中记录的物理位置信息,ORACLE采用索引实现了数据和存放数据的物理位置(ROWID)之间的联系,通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高 * 贪闹汀柠臆音尿白议凸枣诵姐写叭已瓤挺省回矿祈兄蔫发锻篮秉谩梗方质11-Orcle SQL性能优化11-Orcle SQL性能优化 共享 SQL 语句 Oracle提供对执行过的SQL语句进行高速缓冲的机制。被解析过并且确定了执行路径的SQL语句存放在SGA的共享池中。 Oracle执行一个SQL语句之前每次先从SGA共享池中查找是否有缓冲的SQL语句,如果有则直接执行该SQL语句。 可以通过适当调整SGA共享池大小来达到提高Oracle执行性能的目的。 * 狭徊碟择庐鹰扼髓甫饼古蠢昏寝虾括原碧痪榷淳赘傀匈继协狐放郭阅竟吵11-Orcle SQL性能优化11-Orcle SQL性能优化 选择最有效率的表名顺序(1) ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表 driving table)将被最先处理 当ORACLE处理多个表时,会运用排序及合并的方式连接它们。首先,扫描第一个表(FROM子句中最后的那个表)并对记录进行派序,然后扫描第二个表(FROM子句中最后第二个表),最后将所有从第二个表中检索出的记录与第一个表中合适记录进行合并. 只在基于规则的优化器中有效 * 挽丹讯卖岭峪筐只铸骄禄轩蛰沽婪茵闺淖议唯佐宋彻澳棕滥澡吞妆巢赚贸11-Orcle SQL性能优化11-Orcle SQL性能优化 选择最有效率的表名顺序(2) 表 train_service_tab 342 条记录 表 train_city_tab 10 条记录 选择train_city_tab作为基础表 (最好的方法) select count(*) from train_service_tab,train_city_tab 执行时间0.016秒 选择train_service_tab作为基础表 (不佳的方法) select count(*) from train_city_tab,train_service_tab 执行时间0.032秒 * 预特侥啦腹窖强裔神倦形仗抱轻酥瞅挛痞魄操阜掇炼亦狡怒吾渴捶殴墟妮11-Orcle SQL性能优化11-Orcle SQL性能优化 选择最有效率的表名顺序(3) * 如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表. SELECT * FROM LOCATION L, CATEGORY C, EMP E WHERE E.EMP_NO BETWEEN 1000 AND 2000 AND E.CAT_NO = C.CAT_NO AND E.LOCN = L.LOCN 将比下列SQL更有效率 SELECT * FROM EMP E, LOCATION L, CATEGORY C WHERE E.CAT_NO = C.CAT_NO AND E.LOCN = L.LOCN AND E.EMP_NO BETWEEN 1000 AND 2000 短勃坞刀需亲己鳖扶胶胞抽传站谊贤脱命惰杂嚎健挫达镐蝉慷却炯综翼劲11-Orcle SQL性能优化11-Orcle SQL性能优化 Where子句中的连接顺序 (1) * Oracle采用自下而上的顺序解析WHERE子句。 根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。 肢鸯夕噬办扳嫂式矮疮条承踊润胃怂志饼志碑曹幼各呛肉舒檀鸡绷孕玛淑11-Orc

文档评论(0)

9885fp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档