- 1、本文档共32页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL优化策略
提纲 SQL优化 脚本的几个注意点 SQL解析执行 SQL执行计划 共享sql语句 Oracle将用户提交的SQL语句进行解析,然后将执行计划放在内存(系统全局区SGA)中,这样可以减少对相同sql语句的重复解析。 判断过程:1、对文本串计算hashed值比较;2、语句所涉及的对象比较。 Rowid的概念 Rowid是访问表中的给定的行的最快的访问方法,通过ROWID可以直接定位到相应的数据块上,然后将其读到内存。(索引也是通过rowid快速访问数据) Recursive SQL概念 为了执行用户发出的一个sql语句,Oracle必须执行一些额外的语句。比如当我们发送一个DDL请求时,oracle会隐含的执行RecursiveSql来修改相关的数据字典信息 Row Source(行源) 相当于SQL操作的中间结果,比如上一操作返回的符合条件的行的集合(可以是表的全部行数据或者部分行数据) Driving Table(驱动表) 即前面说的基础表,我们应该尽量使用在应用查询的限制条件后,返回较少行源的表作为驱动表。 SQL执行计划 Probed Table(被探查表) 即被驱动的内层表,一般该表较大并且相应被驱动关联的列上应该有索引。 访问路径(方法) (accesspath) 优化器在形成执行计划时需要做的一个重要选择是如何从数据库查询出需要的数据。对于SQL语句存取的任何表中的任何行,可能存在许多存取路径(存取方法),通过它们可以定位和查询出需要的数据,优化器会选择最优路径。(数据库块是最小的IO单位,即使只读一行数据,也会将整块的数据读到内存中) 1)全表扫描(FullTableScans,FTS) Oracle会顺序分配给表的每个数据块,直到最高水平线(HWM)。 使用FTS的前提条件:在较大的表上不建议使用全表扫描,除非取出数据的比较多,超过总量的5%--10%,或你想使用并行查询功能时。 2)通过ROWID的表存取(TableAccessbyROWID或rowidlookup) 3)索引扫描(IndexScan或indexlookup) 一次I/O只能读取一个数据块 表之间的连接 表之间的连接顺序对于查询的效率有非常大的影响,一般以较小的rowsource来驱动较大的rowsource. 嵌套循环(NestedLoops,NL) 哈希连接(HashJoin,HJ) SQL优化原则 选择最有效率的表名顺序(只在基于规则的优化器中有效) ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表)将被最先处理,在FROM子句中包含多个表的情况下,尽量选择记录条数最少的表作为基础表。 WHERE子句中的连接顺序 ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接应该写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件应该写在WHERE子句的末尾。 SELECT子句中避免使用*‘ Oracle在解析的时候会通过查询数据字典,将‘*’转换成所有的列,所以尽量只写我们所需要的字段列。 多表连接时,尽量使用表的别名(Alias) 当在SQL语句中连接多个表时,请使用表的别名并把别名前缀于每个Column上。这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误。 用EXISTS替代IN、用NOT EXISTS替代NOT IN 使用Not in 或者 in时,子句 内部会先执行一个全表遍历,效率较低。使用exists会直接关联匹配并返回满足条件的记录。 删除表全部记录 delete删除指定条件的数据,删除的数据会记录在滚回段,可恢复,速度慢; truncate删除整个表的数据,不可恢复,速度快(直接重置HWM) 减少对表的查询 在含有子查询的SQL语句中,要特别注意减少对表的查询. 例如: 低效 SELECT TAB_NAME FROM TABLES WHERE TAB_NAME = ( SELECT TAB_NAME FROM TAB_COLUMNS WHERE VERSION = 604) AND DB_VER= ( SELECT DB_VER FROM TAB_COLUMNS WHERE VERSION = 604) 高效 SELECT TAB_NAME FROM TABLES WHERE (TAB_NAME,DB_VER) = ( SELECT TAB_NAME,DB_VER) FROM TAB_COLUMNS WHERE VERSION = 604) Update 多个Colum
您可能关注的文档
- PQDT国外优秀博硕士学位论文征订.ppt
- PQDT论文挑选的方法.ppt
- PracticalDatabaseDesignandTuning.ppt
- PQDT学位论文挑选具体步骤.ppt
- PQDT国外博硕士学位论文全文数据库简介.ppt
- Practice.ppt
- PrardivaMangilipally.ppt
- PP视频的未来之路.ppt
- PremiereProCS基础.ppt
- PreparingaProgramtoRun.ppt
- 2024年企业人力资源管理师之二级人力资源管理师模拟考试试卷A卷含答案完整版720780578.pdf
- 2024年检验类之临床医学检验技术(师)全真模拟考试试卷B卷含答案优质 完整版720844645.pdf
- 2024年四川省成都市第七中学初中学校中考一模物理试题(解析版).pdf
- 2024年二级建造师之二建水利水电实务过关检测试卷B卷附答案 .pdf
- 2024年教师资格之中学思想品德学科知识与教学能力综合检测试卷A卷含完整版720848701.pdf
- 2024年教师信息技术2.0教研组研修计划(优秀模板6篇)(6) .pdf
- 2024年教师资格之幼儿综合素质通关提分题库及完整答案 .pdf
- 2024年心理咨询师之心理咨询师基础知识通关提分题库及完整答案完整版720794806.pdf
- 2024年消防设施操作员之消防设备初级技能题库附答案(典型题).pdf
- 2024年小学信息技术工作计划样本(三篇) .pdf
最近下载
- 5G优化案例NR 21G动态频谱共享规模开通实践案例.docx
- 2021国开大学幼儿园课程基础.pdf VIP
- 私募基金管理人实际控制人变更专项法律意见书.docx VIP
- 护工培训之基础技能92955.pptx
- 5G优化案例:NR 2.1GHz DSS动态频谱共享试点总结案例.docx
- 2025届陕西省西安地区八校高三冲刺模拟生物试卷含解析.doc
- 江苏开放大学环境生态学调研报告.docx
- 高中语文2025届高考必修教材理解性默写精选练习(附参考答案).doc
- 水运工程建设项目环境影响评价指南.docx
- 【创新设计】2016-2017学年高中英语 Unit 4 Astronomy the science of the stars Period One Warming Up & Reading课时作业 新人教版必修3.doc
文档评论(0)