- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第28章 SQL语句优化
SQL语句优化 我们说过一个设计良好的应用程序是不需要优化的,这里的“良好”很大程度上指良好的SQL语句设计,在Oracle数据库应用系统中几乎有80%的性能问题是有糟糕的SQL语句引起的。 那么如何写出“良好”的SQL语句呢,我们给出一个条款式的说明,并作简单地讨论。 对于对于规模较小的表,如果SQL语句的WHERE子句有GROUP BY 、DISTINCT或GROUP BY则对设计的列建立明确的索引。 如果SQL语句的WHERE子句在使用索引时比执行全表扫描还要耗时,则不使用索引。 在应用程序的SQL语句中不要使用相关子查询,因为随着子查询和主查询中表中行记录的增长,这种查询将极大的消耗CPU资源而尽量使用联机视图重新编写。 在SQL语句的where子句中用not exists来代替not in。 SQL语句优化 使用like运算符代替substr函数,因为如’scot%’这样的like运算符将使用索引,而substr函数则使索引无效。 如果SQL语句中频繁使用基于某种计算规则的查询并且知道所涉及的列,则创建基于函数的索引。 如果查询总是基于主从表关系的行,则对外键建立索引。 尽量减少建立索引的时间,可以将sort_area_size设置的足够大,使得建立索引的排序行为都在内存中发生,或者在系统不繁忙时创建大表的索引。 上述条款式说明的都基于减少I/O和更有效的内存使用,通过减少系统I/O和有效利用内存和CPU的使用减少系统压力,增加系统对用户的响应时间。 了解了这些基本规则后,我们介绍如何使用工具获得SQL的执行计划。 SQL语句优化 获得SQL语句的执行计划 。 SQL语句执行计划就是解释SQL语句的执行步骤,在Oracle中使用explain plan for指令来获得SQL语句的执行计划,也可以使用autotrace执行获得SQL语句的执行过程和相关的统计信息,如物理读的数据量、磁盘内排序的数据量等。 SQL语句优化 使用EXPLAIN PLAN FOR命令 在使用该指令时,必须先使用一个脚本文件utlxplan.sql来创建plan_table表来存储使用explain plan for 语句获得的SQL语句的分析结果 。 执行脚本文件utlxplan.sql。 SQL @F:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\utlxplan.sql 查看表PLAN_TABLE的结构 SQLdesc PLAN_TABLE 通过explain plan for 指令分析SQL语句的执行计划。 SQL explain plan for 2 select count(*) from scott.emp; 2 TABLE ACCESS FULL EMP 1 SQL语句优化 查看表PLAN_TABLE中的SQL语句执行计划信息。 查看表PLAN_TABLE中的SQL语句执行计划信息。 SQL select id,operation,options,object_name,position 2 from plan_table; ID OPERATION OPTIONS OBJECT_NAME POSITION ------ ---------------------------------- ------------------------ ------------------------- ---------------- 0 SELECT STATEMENT 3 1 SORT AGGREGATE 1 2 TABLE ACCESS FULL EMP 1 从上例的输出中可以看出SQL语句的执行过程,我们分析最后一行,ID说明步骤标识,OPERATION为TABLEACCESS说明该步骤的行为是访问表,OPTIONS为FULL说明,使用全表扫描访问表,OBJECT_NAME说明行为的对象为表EMP。 在分析一个SQL语句时,经常使用该指令判断是否使用适当的索引完成表的访问,从而适当的修改索引或创建索引来优化SQL语句的执行。 SQL语句优化 使用AUTOTRACE指令可以跟踪SQL语句并分析其执行 。 使用AUTOTRACE指令可以跟踪SQL语句并分析其执行步骤,统计信息如物理读数据量,磁盘和
您可能关注的文档
最近下载
- 留守儿童学前教育毕业论文.docx VIP
- 热处理炉温均匀性测试标准SAE AMS2750F Rev.F 2020 英文版+中文版.pdf VIP
- 输入11到20带圈字符.doc VIP
- 固体比热容的测量.doc VIP
- 翻车机值班员岗位职责共3篇翻车机操作工岗位职责.docx VIP
- 【新教材】人教版(2024)八年级上册英语Unit 6 Plan for Yourself教案(表格式).docx
- 植筋、界面处理检验批质量验收记录表.doc VIP
- 实用营养与保健知到课后答案智慧树章节测试答案2025年春浙江大学.docx VIP
- 泌尿系结石PPT课件PPT课件.ppt
- 标准图集-20S515-钢筋混凝土及砖砌排水检查井.pdf VIP
原创力文档


文档评论(0)