教程中国
PHOTOSHOP CS9.0中文版 MAYA 8.5 FOR WINDOWS Corel Painter v9.0 Flash MX2004 中文版 Illustrator cs2 中文版
VC++6.0含sp6 中英文版 VB6.0 +sp6 简体中文版 Borland Delphi 7汉化版 MSDN for vb6.0中文版 Visual Studio 2005简体
教程中国下属 文件存储共享专家BIBIDU.COM 提供大型软件,教材,源码,电影,音乐,图书等下载 更多精品请点此进入
  您目前所在位置: 教程中国 >> Oracle >> 备份恢复 >> 在Oracle里加快SQL执行的三种方法 RSS订阅
在Oracle里加快SQL执行的三种方法
教程(视频,书籍)下载:  ASP.NET AutoCAD 数据库 C# ASP java photoshop 网页设计 delphi 3dmax Flash C++ VB 张孝祥 实例   更多请进入BIBIDU搜索
IT搜索引擎   

  Oracle提供了多种方法用于减少花在剖析Oracle SQL表达式上的时间,在执行带有大量执行计划的复杂查询时剖析过程会拖累系统的性能。现在我们来简要地看看这些方法中的几种。
  
  
  使用ordered提示
  
  
  
  Oracle必须花费大量的时间来剖析多表格的合并,用以确定表格合并的最佳顺序。如果SQL表达式涉及七个乃至更多的表格合并,那么有时就会需要超过30分钟的时间来剖析,因为Oracle必须评估表格合并所有可能的顺序。八个表格就会有40,000多种顺序。Ordered这个提示(hint)和其他的提示一起使用能够产生合适的合并顺序。
  
  Ordered这个提示会要求列在SQL表达式FROM字句里的表格按照指定的顺序进行合并,FROM字句里的第一个表格会指定驱动表格(driving table)。驱动表格应该是返回最小行数的表格。使用ordered提示会跳过非常耗时和耗资源的剖析操作,并加快Oracle SQL的执行。
  
  Listing A如下:
  Listing A
  
  
  select /*+ ordered use_nl(bonus) parallel(e, 4) */ e.ename, hiredate, b.comm from emp e, bonus b where e.ename = b.ename ;
  
  Listing A里是一个复杂查询的例子,这个查询被强制进行一个嵌套循环,从而与对emp表格进行的并行查询合并。要注意,我已经使用ordered提示来引导Oracle去按照WHERE子句所列出的顺序来评估表格。
  
  
  
  使用theordered_predicates
  
  ordered_predicates提示在查询的WHERE子句里指定的,并被用来指定布尔判断(Boolean predicate)被评估的顺序。在没有ordered_predicates的情况下,Oracle会使用下面这些步骤来评估SQL判断的顺序:
  
  子查询的评估先于外层WHERE子句里的Boolean条件。
  所有没有内置函数或者子查询的布尔条件都按照其在WHERE子句里相反的顺序进行评估,即最后一条判断最先被评估。
  每个判断都带有内置函数的布尔判断都依据其预计的评估值按递增排列。
  你可以使用ordered_predicates提示来强制取代这些缺省的评估规则,那么你WHERE子句里的项目就会按照其在查询里出现的顺序被评估。在查询的WHERE子句里使用了PL/SQL函数的情况下,通常会使用ordered_predicates提示。如果你知道限制最多的判断并且希望Oracle最先评估这些判断的时候,在这种情况下,它也是非常有用的。
  
  
  
  用法提示:
  你不能使用ordered_predicates提示来保存对索引键进行判断评估的顺序。
  
  
  
  限制表格合并评估的数量
  
  提高SQL剖析性能的最后一种方法是强制取代Oracle的一个参数,这个参数控制着在评估一个查询的时候,基于消耗的优化器所评估的可能合并数量。optimizer_search_limit这个参数会指定表格合并组合的最大数量,后者将会在Oracle试图确定合并多表格最佳方式的时候被评估。这个参数有助于防止优化器花更多的时间来评估可能的合并顺序,而不是把时间花在寻找最佳合并顺序上。optimizer_search_limit还控制着用于调用star join提示的阙值,当查询里的表格数量低于optimizer_search_limit(其缺省的值是5)的时候,star提示就会被光顾。
  
  
  
  关于优化器参数的更多信息
  要获得更多关于用于复杂查询最大性能调试的Oracle优化器的信息,见 《使用智能优化器极限提高Oracle的性能》
  
  
  
  以上只是一些Oracle DBA用来优化Oracle数据库应用程序SQL查询的性能的一些小技巧。
  
  

来源:upschool.com.cn
作者:
关键字:三种方法
发表日期:2007-1-6 0:46:23

网页显示有限 阅读全文请下载本文完整版WORD文档

上一篇:在ADO.NET中使用Oracle存储程序   下一篇:理解数据库的统计集聚函数


2008-12-2 5:56:56
本文的相类似文章
  • 用Oracle8i修复数据库坏块的三种方法
  • 实用:禁用FSO三种方法
  • 教你破解E-mail密码的三种方法
  • 识破网络钓鱼常使用的三种方法
  • 大小写互换的三种方法
  • VB实现图形动画的三种方法
  • Coreldraw图像文件导入PS三种方法
  • 在内核2.6.0-test中安装最新驱动NVIDIA 1.0-4620(共三种方法)
  • 快速关闭Windows 2003的三种方法
  • 三种方法激活Win 2003
  • 在学习中进步 在进步中成长 教程中国相随您的成长之路
    华腾联合科技股份有限公司版权所有
    广告联系:Rosibo@163.com