关于如何编写优化的sql语句.docVIP

  1. 1、本文档共25页,可阅读全部内容。
  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文档。上传文档
查看更多
关于如何编写优化的sql语句.doc

如何编写高效的SQL语句 序言 数据库的性能问题,一直以来都是困扰各个事业部的大问题。在性能问题中SQL语句的编写又是重中之重。因此,为提高各个事业部相应产品的执行效率,提高软件的性能,实现从功能要求到性能要求的转变,特编写此专题文章。 SQL的优化器执行分析 在ORACLE RDBMS SERVER软件的内部,对于SQL语句的执行有一个优化器(OPTIMIZER)对SQL语句的执行进行优化。在我们使用后面介绍的工具对SQL的执行路径进行查看的时候,系统显示出来的是由优化器给出的执行路径的解释方案,如果对优化器的解释方案不了解的话,就无法针对出现的问题进行SQL语句的调整。现把ORACLE8提供的优化器的执行解释方案公布如下。 如何看SQL解释方案 Execution Plan ---------------------------------------------------------- 1 SELECT STATEMENT Optimizer=CHOOSE (Cost=94 Card=1) 2 SORT (AGGREGATE) 3 COUNT (STOPKEY) 4 INDEX (FULL SCAN) OF PK_TBI_TM (UNIQUE) (Cost=94 Car d=27164) (图1) 图1为ORACLE对语句“select count(*) from tbi_tm where rownum10”给出的一个执行的解释方案,那我们该如何看这个方案呢?我们在看这个执行方案的时候要遵循一个原则“由里到外,由高到低”,同时“由里到外”不能违反“由高到低”的原则。因此上述的语句的执行步骤顺序为:4、3、2;假设存在一个步骤5的话,而且它的层次同3一致,那么,上述语句的执行步骤顺序就会改为:4、3、5、2。在图1中还给出了执行了何种操作(例如:INDEX(FULL SCAN),COUNT (STOPKEY)等,具体的说明在下面进行解释),同时在最后还给出了执行的代价(COST)。 SQL解释方案介绍 操作说明 系统中的全部操作可分为行操作或集(SET)操作。二者之间的比较可以对比如下: 行操作 集操作 一次执行一行 在行的结果集上执行 如果不涉及集操作将在FETCH级上操作 当光标打开时,在EXECUTE级上执行 在取最后一行之前,用户可以看到第一次的结果 用户不能看到第一次的结果,直到所有的行被取出和处理完 示例:全表扫描 示例:使用group by子句的全表扫描 对于行和集操作的分类如下(暂时列到ORACLE 8): 行操作 集操作 And-equal,Bitmap,Concatenation,Count stopkey,Filter,For update,Index full scan,Index range scan,Index unique scan,Intersection,Merge join,Nested loops,Outer join,Projection,Sequence,Table access by rowid,Table access cluster,Table access full,Table access hash,Union,Union-all Connect by,Count,Hash join,Minus,Remote, Sort aggregate,Sort group by,Sort join,Sort order by,Sort unique,View 具体操作解释 在上述的操作中有许多我们平时很少用到,因此就不一一介绍了,只介绍日常常用的一些操作: 约定 Table_name Column_name Index_type Company Company_id U_ind City Ind State Ind Parent_company_id Ind Competitor Company_id U_ind Product_id U_ind Sales Company_id U_ind Period_id U_ind AND-EQUAL 说明:用来合并由索引返回的值的排序列表。AND-EQUAL用于非唯一索引的合并和唯一索引的范围扫描。 例子:select name,city,state from company where city=’Roanoke’ and state=’VA’ CONCATENATION 说明:用来执行结果集的union all操作 例子:select name,city,state from company where state=

文档评论(0)

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

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

1亿VIP精品文档

相关文档