Oracle提高SQL执行效率的3种实用方案简介

数据库 Oracle
以下的文章主要向大家讲述的是Oracle提高SQL执行效率的3种适用性很强的方法,以下就是文章的具体内容分析,以下就是文章的具体内容分析。

如果你想提高SQL在Oracle里的实际操作的执行效率,首先你要想到的是优化其实际的应用业务逻辑,另外Oracle也提供了对技术层面实际应用方法,以下的文章主要向你讲述的Oracle提高SQL执行效率3种好用的方法:

Oracle提供了多种方法用于减少花在剖析Oracle SQL表达式上的时间,在执行带有大量执行计划的复杂查询时剖析过程会拖累系统的性能。现在我们来简要地看看这些方法中的几种。

1、使用ordered提示

Oracle必须花费大量的时间来剖析多表格的合并,用以确定表格合并的***顺序。如果SQL表达式涉及七个乃至更多的表格合并,那么有时就会需要超过30分钟的时间来剖析,因为Oracle必须评估表格合并所有可能的顺序。八个表格就会有40,000多种顺序。Ordered这个提示(hint)和其他的提示一起使用能够产生合适的合并顺序。

Ordered这个提示会要求列在SQL表达式FROM字句里的表格按照指定的顺序进行合并,FROM字句里的***个表格会指定驱动表格(driving table)。驱动表格应该是返回最小行数的表格。使用ordered提示会跳过非常耗时和耗资源的剖析操作,并加快Oracle SQL的执行。

Listing A如下:

以下是引用片段:

 

  1. Listing A  
  2. select /*+ ordered use_nl(bonus)  
  3. parallel(e, 4) */ e.ename, hiredate, b.comm from emp e, bonus b  
  4. where e.ename = b.ename ;  

 

Listing A里是一个复杂查询的例子,这个查询被强制进行一个嵌套循环,从而与对emp表格进行的并行查询合并。要注意,我已经使用ordered提示来引导Oracle去按照WHERE子句所列出的顺序来评估表格。

2、Oracle提高SQL执行效率的三种方法之二:使用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提示来保存对索引键进行判断评估的顺序。

3、限制表格合并评估的数量

Oracle提高SQL剖析性能的***一种方法是强制取代Oracle的一个参数,这个参数控制着在评估一个查询的时候,基于消耗的优化器所评估的可能合并数量。

optimizer_search_limit这个参数会指定表格合并组合的***数量,后者将会在Oracle试图确定合并多表格***方式的时候被评估。这个参数有助于防止优化器花更多的时间来评估可能的合并顺序,而不是把时间花在寻找***合并顺序上。optimizer_search_limit还控制着用于调用star join提示的阙值,当查询里的表格数量低于optimizer_search_limit(其缺省的值是5)的时候,star提示就会被光顾。

以上只是一些Oracle DBA用来优化Oracle数据库应用程序SQL查询的性能的一些小技巧。

【编辑推荐】

  1. Oracle移植到MySQL会碰到那些问题?
  2. Oracle 分页和排序功能在数据库中如何实现?
  3. Oracle字符集的查看与修改全集
  4. Oracle查询记录数在什么环境下会出现问题?
  5. Oracle建立DBLINK的操作经验总结
责任编辑:佚名 来源: 互联网
相关推荐

2010-04-29 15:43:17

2010-04-30 14:14:11

Oracle提高SQL

2010-04-29 12:46:42

Oracle SQL

2011-03-21 15:51:27

SQL执行效率

2010-09-07 10:26:37

SQL语句

2010-04-13 15:14:31

Oracle优化

2010-05-07 18:21:42

Oracle提高SQL

2010-11-15 16:46:49

Oracle查询效率

2009-12-28 10:08:07

OracleSQLDevelope开发框架

2010-10-27 14:15:44

Oracle数据库效率

2020-06-23 09:52:31

运营效率首席信息官IT预算

2010-04-26 16:31:09

Oracle SQL

2010-10-25 10:55:11

Oracle函数索引

2010-11-12 11:25:44

SQL SERVER视

2010-04-22 10:30:11

Oracle RAC

2010-03-31 17:40:15

Oracle SELE

2019-12-12 15:07:44

虚拟机性能效率

2015-04-16 10:15:45

PHPPHP执行效率PHP技巧

2010-11-18 10:06:16

Oracle数据库性能

2021-07-19 09:18:55

IDEA插件工具
点赞
收藏

51CTO技术栈公众号