文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程数据库通过分析SQL语句的执行计划优化SQL(四)
精品推荐
特别推荐
·SQL数据库完全使用手册
·进阶:精妙SQL语句介绍
·sql删除记录
·学习SQL语句之SQL语句大全
·数据备份失败的五个原因及解决办法
·解决SQL Server常见的七个经典问题
·SQL存储过程的概念,创建,调用,管理,删除,优点
·带你轻松接触13个数据库术语
·如何恢复系统数据库如何恢复系统数据库?
·通过实例讲解由浅入深学会存储过程
热点TOP10
·collate chinese_prc_ci_as null 是什么意思
·数据备份失败的五个原因及解决办法
·如何恢复系统数据库如何恢复系统数据库?
·SQL语句性能优化--LECCO SQL Expert
·数据库开发个人总结(ADO.NET小结)
·图片保存到数据库和从数据库读取图片并显示(c#)
·用独立的DLL来存储图片(资源文件)
·在DataTable中查询应该注意的问题
·解析:删除数据库中重复数据的两个方法
·判断与主表关联的外键表是否有数据引用再删除

通过分析SQL语句的执行计划优化SQL(四)

日期:2008年5月19日 作者: 查看:[大字体 中字体 小字体]


  如何干预执行计划 - - 使用hints提示
         
  基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担。但有时它也聪明反被聪明误,选择了很差的执行计划,使某个语句的执行变得奇慢无比。此时就需要DBA进行人为的干预,告诉优化器使用我们指定的存取路径或连接类型生成执行计划,从而使语句高效的运行。例如,如果我们认为对于一个特定的语句,执行全表扫描要比执行索引扫描更有效,则我们就可以指示优化器使用全表扫描。在ORACLE中,是通过为语句添加hints(提示)来实现干预优化器优化的目的。

         hints是oracle提供的一种机制,用来告诉优化器按照我们的告诉它的方式生成执行计划。我们可以用hints来实现:
  1) 使用的优化器的类型
  2) 基于代价的优化器的优化目标,是all_rows还是first_rows。
  3) 表的访问路径,是全表扫描,还是索引扫描,还是直接利用rowid。
  4) 表之间的连接类型
  5) 表之间的连接顺序
  6) 语句的并行程度

       除了”RULE”提示外,一旦使用的别的提示,语句就会自动的改为使用CBO优化器,此时如果你的数据字典中没有统计数据,就会使用缺省的统计数据。所以建议大家如果使用CBO或HINTS提示,则最好对表和索引进行定期的分析。

  如何使用hints:

  Hints只应用在它们所在sql语句块(statement block,由select、update、delete关键字标识)上,对其它SQL语句或语句的其它部分没有影响。如:对于使用union操作的2个sql语句,如果只在一个sql语句上有hints,则该hints不会影响另一个sql语句。

  我们可以使用注释(comment)来为一个语句添加hints,一个语句块只能有一个注释,而且注释只能放在SELECT, UPDATE, or DELETE关键字的后面

  使用hints的语法:

{DELETEINSERTSELECTUPDATE} /*+ hint [text] [hint[text]]... */
or
{DELETEINSERTSELECTUPDATE} --+ hint [text] [hint[text]]...

  注解:
  1) DELETE、INSERT、SELECT和UPDATE是标识一个语句块开始的关键字,包含提示的注释只能出现在这些关键字的后面,否则提示无效。
  2) “+”号表示该注释是一个hints,该加号必须立即跟在”/*”的后面,中间不能有空格。
  3) hint是下面介绍的具体提示之一,如果包含多个提示,则每个提示之间需要用一个或多个空格隔开。
  4) text 是其它说明hint的注释性文本

  如果你没有正确的指定hints,Oracle将忽略该hints,并且不会给出任何错误。

  使用全套的hints:
         
  当使用hints时,在某些情况下,为了确保让优化器产生最优的执行计划,我们可能指定全套的hints。例如,如果有一个复杂的查询,包含多个表连接,如果你只为某个表指定了INDEX提示(指示存取路径在该表上使用索引),优化器需要来决定其它应该使用的访问路径和相应的连接方法。因此,即使你给出了一个INDEX提示,优化器可能觉得没有必要使用该提示。这是由于我们让优化器选择了其它连接方法和存取路径,而基于这些连接方法和存取路径,优化器认为用户给出的INDEX提示无用。为了防止这种情况,我们要使用全套的hints,如:不但指定要使用的索引,而且也指定连接的方法与连接的顺序等。

        下面是一个使用全套hints的例子,ORDERED提示指出了连接的顺序,而且为不同的表指定了连接方法:
SELECT /*+ ORDERED INDEX (b, jl_br_balances_n1) USE_NL (j b)
USE_NL (glcc glf) USE_MERGE (gp gsb) */
b.application_id, b.set_of_books_id ,
b.personnel_id, p.vendor_id Personnel,
p.segment1 PersonnelNumber, p.vendor_name Name
FROM jl_br_journals j, jl_br_balances b,
gl_code_combinations glcc, fnd_flex_values_vl glf,
gl_periods gp, gl_sets_of_books gsb, po_vendors p
WHERE ...

  指示优化器的方法与目标的hints:

        ALL_ROWS       -- 基于代价的优化器,以吞吐量为目标
        FIRST_ROWS(n)   -- 基于代价的优化器,以响应时间为目标

[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] 下一页 




上一篇:通过分析SQL语句的执行计划优化SQL(三)

下一篇:数据库Oracle9i的企业管理器介绍

相关文章:
·鲜为人知的Windows XP优化
·一次入侵过程的公开分析
·经典语句:71条人生信条
·网站优化需要重要注意的几点事项
·菜鸟必看:WinXP终极优化
·提高运行速度 教你一步一步优化XP系统
·求爱宝典:爱情语句
·万能五笔2001注册码分析及暴力破解 上
·经典爱情语句爱情物语爱情短语
·搜索引擎优化SEO的五大技术难题
相关软件:
·卡耐基 心灵改造计划(上集)
·全能助手Windows优化王 2006 V3.95
·3D 动画与建模:人体的综合与分析技术
·winxp sp2 完全优化版 GHO 免刻录直接克隆
·注册表优化实战练习手册(图文教程 菜鸟先飞系列教材)
·d3dx9_27.dll游戏执行补丁
·8000英语常用语句MP3+doc 查看
·Windows优化大师V7.72 Build 7.429 正式版
·杀毒优化大师 V2.3.1 build1128
·建设部监理师-案例分析录音06

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot