Oracle提高SQL执行效率的三种方法

本文介绍了提高Oracle SQL执行效率的三种方法:1) 使用'ordered'提示优化表合并顺序,尤其是针对多表连接;2) 'ordered_predicates'提示控制布尔判断的评估顺序,以改善查询性能;3) 调整_optimizer_search_limit参数限制合并评估的数量,避免过度耗费优化器资源。
摘要由CSDN通过智能技术生成

要提高SQL在Oracle里的执行效率,优化应用的业务逻辑是最主要的,从技术层面来讲Oracle也提供了一些方法,今天主要讲3种:

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

1、使用ordered提示

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

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

Listing A如下:

以下是引用片段:

Listing A

select /*+ ordered use_nl(b) parallel(e, 4) */ e.ename, hiredate, b.comm

from emp e,bonus b

where e.ename = b.ename ;

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

2、使用ordered_predicates

ordered_predicates提示在查询的WHERE子句里指定的&

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值