`
l6259710
  • 浏览: 109680 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ORACLE用ORDERED提示改变SQL执行计划 【转】,解决Oracle查询卡死问题,优化查询语句。

 
阅读更多

     之前在公司开发内部信息化系统,碰到了一个很悲剧事情。项目在测试环境运行没问题,上到正式环境,访问就卡住不动了。检查才发现那条查询的SQL的问题。因为一条SQL涉及了十几张表,left join的,inner join的,多表查询的,各种关联交杂在一起,整条SQL语句二三十行,放到plsql里面整整一页。可能由于这种关联性的东西太多,导致数据库执行查询的时候出现卡死的情况。测试环境的数据库是从正式环境中备份过去的,数据是一样的,而且都是同一台服务器的oracle,但实例名是不同的。最后使用了添加 /*+ ordered */  解决了查询卡死的问题。

 

     ORDERED提示强制Oracle按照From子句中表出现的顺序进行表连接。

     通过ORDERED提示,可以避免CBO SQL解析过程中的表连接评估,从而避免Oracle产生错误的执行计划,或者强制Oracle按照我们指定的方式执行。在很多时候,当我们清楚地了解数据结构和数据分布之后,就可以通过ORDERED提示来提高SQL性能。

     如下例:

SELECT /*+ ordered */ COUNT (*)
FROM t_middle, t_small, t_max
WHERE t_small.object_id = t_middle.object_id
AND t_middle.object_id = t_max.object_id;

 

最后发现数据库查询优化的问题,

where …… and    rl.date_value >= to_date(tt.month,'yyyy-MM') and rl.date_value < add_months(to_date(tt.month,'yyyy-MM'),1)  ……

  

where …… and    to_char(rl.date_value,'yyyy-mm') = tt.month ……

 上面和下面这两天sql语句都是查询rl.date_value的时间在tt.month这个月份所有有关记录。。

通过大于或等于第一天并且小于第二个月的最后一天的这种方式,性能消耗极大。用第二种方式时间节省3倍以上。本来执行需要10秒多,修正后,大约一秒多就OK了。

分享到:
评论

相关推荐

    SQL语句优化过程策略,帮助您优化Oracle查询语句

    SQL语句优化过程优化策略 21. /*+ORDERED*/ 根据表出现在FROM中的顺序,ORDERED使ORACLE依此顺序对其连接. 例如: SELECT /*+ORDERED*/ A.COL1,B.COL2,C.COL3 FROM TABLE1 A,TABLE2 B,TABLE3 C WHERE A.COL1=B.COL1...

    如何用智能优化器提高Oracle的性能

    但是聪明的Oracle DBA和开发人员能够改变表的搜索限制参数或者使用ordered提示来手工指定表的连接顺序,从而显著地减少优化和执行新查询所需的时间。消耗在准备新的SQL语句的时间是Oracle SQL语句执行时间的最重要的...

    在Oracle里加快SQL执行的三种方法

    Oracle必须花费大量的时间来剖析多表格的合并,用以确定表格合并的最佳顺序。如果SQL表达式涉及七个乃至更多的表格合并,那么有时就会...使用ordered提示会跳过非常耗时和耗资源的剖析操作,并加快Oracle SQL的执行。

    ORACLE9i_优化设计与系统调整

    §10.13.8 使用ORACLE 诊断工具 126 第三部分 ORACLE应用系统开发优化 128 第11章 诊断与调整工具- 128 §11.1 警告日志文件 128 §11.1.1 警告日志文件管理 128 §11.1.2 参考警告日志文件调整 128 §11.2 后台进程...

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

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

    让Oracle跑得更快 Oracle 10g性能分析与优化思路.part2.rar

    第1章 引起数据库性能问题的因素 1 1.1 软件设计对数据库的影响 1 1.1.1 软件架构设计对数据库性能的影响 1 1.1.2 软件代码的编写对数据库性能的影响 2 1.2 数据库的设计 8 1.2.1 oltp数据库 9 1.2.2 olap数据库 10 ...

    SQL普查优化信息汇总

    很多情况下ORACLE并不能为我们的SQL语句选择最有效的驱动表, 在我们自己确定了合适的驱动表之后,可以使用HINT: ORDERED,LEADING来指定合适的驱动表 WHERE子句中的连接条件书写顺序 那些可以过滤掉最大数量记录的...

    使用hint强制基于规则的查询优化

    Oracle从9i开始默认的优化规则设置为choose,这时,如果对关键数据表的analyze数据不准确或者数据不存在,则可能导致oracle选择错误的执行路径,导致执行效率低下.笔者所参与的系统中,曾碰到在几个数百万条记录的表进行...

    让Oracle跑得更快 Oracle 10g性能分析与优化思路.part1.rar

    第1章 引起数据库性能问题的因素 1 1.1 软件设计对数据库的影响 1 1.1.1 软件架构设计对数据库性能的影响 1 1.1.2 软件代码的编写对数据库性能的影响 2 1.2 数据库的设计 8 1.2.1 oltp数据库 9 1.2.2 olap数据库 10 ...

    查詢高消耗CPU的pid的SQL

    查詢高消耗CPU的pid的SQL,SELECT /*+ ORDERED */ sql_text FROM v$sqltext a WHERE (a.hash_value, a.address) IN ( SELECT DECODE (sql_hash_value, 0, prev_hash_value, sql_hash_value ), DECODE (sql_hash_value...

    oracle的hint函数

    介绍了oracle中的hint,常用的 ordered、use_nl、use_hash、index、full 五种, 给出使用实例和适用场景

    自己用的sql语句

    自己用的,对别人无用 create table t_classify_method ( id uniqueidentifier primary key default newid(), name_ch nvarchar(20), naem_en nvarchar(60), d_code nvarchar(2) ) go insert into t_classify...

    T-SQL性能调优秘笈 基于SQL Server 2012窗口函数 源码和示例数据库

    文件列表 Chapter 01 - SQL Windowing.sql ...Chapter 03 - Ordered Set Functions.sql Chapter 04 - Optimization of Window Functions.sql Chapter 05 - T-SQL Solutions using Window Functions.sql TSQL2012.sql

    Oracle hint

    在SQL优化过程中常见HINT的用法(前10个比较常用, 前3个最常用): 1. /*+ INDEX */ 和 /*+ INDEX(TABLE INDEX1, index2) */ 和 /*+ INDEX(tab1.col1 tab2.col2) */ 和 /*+ NO_INDEX */ 和 /*+ NO_INDEX(TABLE INDEX1...

    java ordered接口应用

    java ordered接口应用,和gradle配置下部署了一个spring boot项目,并且写了一个例子,解压直接部署就可以用

    PyPI 官网下载 | orderedset-1.2.tar.gz

    资源来自pypi官网。 资源全名:orderedset-1.2.tar.gz

    OrderedDictionary, 这里库提供OrderedDictionary和MutableOrderedDictionary子类.zip

    OrderedDictionary, 这里库提供OrderedDictionary和MutableOrderedDictionary子类 命令行目存储在NSDictionary中的对象的顺序未定义。 通常,可以以通过一组键/值对循环,并按照插入的顺序返回对象。 这个库提供了两...

    微软内部资料-SQL性能优化5

    A clustered index keeps the data in a table ordered around the key. The data pages in the table are kept in a doubly linked list called the page chain. The order of pages in the page chain, and the ...

    北大POJ2533-Longest Ordered Subsequence【O(nlogn)】

    北大POJ2533-Longest Ordered Subsequence【O(nlogn)】

    Direct Oracle Access 413 Delphi XE6 Version

    In case the software product was ordered by company Purchase Order, the appropriate invoice sent afterwards was paid within 30 days after invoice date. In case the software product was ordered on-line...

Global site tag (gtag.js) - Google Analytics