之前在公司开发内部信息化系统,碰到了一个很悲剧事情。项目在测试环境运行没问题,上到正式环境,访问就卡住不动了。检查才发现那条查询的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了。
分享到:
相关推荐
这些暗示可以用来控制执行计划,从而改善查询性能或解决优化器选择错误的问题。暗示分为多种类型,包括但不限于访问方法暗示、连接方法暗示等。 ##### 2.1 访问方法暗示 访问方法暗示主要用于指定如何访问表或索引...
通过合理使用SQL优化提示,可以显著提高查询效率,改善数据库的整体性能。在实际应用中,应根据具体情况选择合适的优化策略,同时注意监控和分析查询执行计划,确保优化效果符合预期。希望本文介绍的内容能够帮助...
本文将探讨三种在Oracle中加速SQL执行的方法,特别关注如何通过调整查询结构和利用特定的优化提示来提高查询效率。 首先,我们可以使用"Ordered"提示来指定表格合并的顺序。Oracle在处理涉及多个表的查询时,会尝试...
下面是一些常用的Oracle查询SQL语句,可以帮助管理员监控数据库的状态和解决锁问题。 1. **查询被锁定的对象**: ```sql SELECT t2.username, t2.sid, t2.serial#, t3.object_name, t2.OSUSER, t2.MACHINE, t2....
在本文中,我们将深入探讨通过分析SQL语句的执行计划来优化JOIN的方法,特别是关注JOIN过程中的顺序和连接类型。 JOIN过程通常涉及两个row source(表),并且在大多数情况下,JOIN操作的步骤是串行的。尽管可以...
### Oracle SQL优化详解 #### 一、Oracle优化器概述 Oracle数据库中的SQL执行计划是由优化器根据查询条件、数据分布等因素动态生成的。优化器的主要作用在于决定如何最有效地执行SQL语句,以达到最小化资源消耗...
Oracle执行计划机制是数据库优化的关键,它决定了SQL查询如何高效地执行。在Oracle数据库中,SQL语句的执行过程包括多个步骤,从语法检查到生成执行计划,再到建立二进制代码,每一步都对查询性能产生影响。尤其是...
但是聪明的Oracle DBA和开发人员能够改变表的搜索限制参数或者使用ordered提示来手工指定表的连接顺序,从而显著地减少优化和执行新查询所需的时间。消耗在准备新的SQL语句的时间是Oracle SQL语句执行时间的最重要的...
但是,通过上述内容,我们可以了解到Oracle数据库SQL查询优化的几个关键点,包括如何合理使用提示和参数以及如何在执行过程中选择合适的优化策略。掌握这些知识点,对于数据库性能调优具有重要的指导意义。
在Oracle数据库中,SQL分页是一种非常常见的查询技术,它允许我们从大量数据中按需获取一部分结果,而不是一次性加载所有记录。这对于提高用户体验和优化系统性能至关重要,尤其是在处理大数据量的Web应用中。本实践...
执行计划是指Oracle数据库优化器根据SQL语句选择的最佳查询路径,它决定了数据如何被访问、哪些索引被使用以及数据如何被连接等关键步骤。智能优化的核心在于利用数据库的内置机制,如成本基础优化(Cost-Based ...
Oracle在处理SQL语句时会生成一个执行计划,它定义了数据的检索方式。通过使用EXPLAIN PLAN或DBMS_XPLAN,我们可以查看执行计划,了解语句的执行步骤和成本。理解执行计划有助于我们找出可能的性能瓶颈。 二、索引...
### 关于Oracle SQL优化的关键知识点 #### 一、SQL优化的重要性 在数据库管理与开发过程中,SQL查询性能的优劣直接影响到系统的响应速度和用户体验。特别是在Oracle这样的大型关系型数据库管理系统中,高效的SQL...
AWR报告能够帮助数据库管理员(DBA)了解和分析系统在一段时间内的资源使用情况,从而诊断性能问题,特别是那些由低效SQL语句引起的性能问题。据统计,约90%的数据库性能问题都与低效的SQL有关。因此,掌握如何利用...
综上所述,通过明智地使用`ordered`提示、`ordered_predicates`提示以及适当地调整`optimizer_search_limit`参数,我们可以显著提升Oracle SQL查询的执行效率。这些方法不仅适用于大型、复杂的查询,也适用于那些...
本文将分享一些常用的SQL查询语句,帮助用户更好地理解和利用Oracle EBS中的数据。 1. **查询菜单列表** Oracle EBS 的用户界面是通过菜单结构来组织功能的。要查询菜单列表,你需要访问相关的数据库表。主要涉及...
§10.13.8 使用ORACLE 诊断工具 126 第三部分 ORACLE应用系统开发优化 128 第11章 诊断与调整工具- 128 §11.1 警告日志文件 128 §11.1.1 警告日志文件管理 128 §11.1.2 参考警告日志文件调整 128 §11.2 后台进程...
根据提供的文件信息,我们可以总结出一系列DBA(数据库管理员)常用的SQL语句,这些语句在Oracle数据库管理中非常实用。下面将详细解释每个SQL语句的功能及其应用场景。 ### SQL语句1:查询等待事件 ```sql select...
【优化SQL语句的一些策略和建议】 SQL语句的优化对于数据库性能的提升至关重要,尤其在处理大量数据时。以下是一些有效的优化策略: 1. **避免在WHERE子句上使用转换列**:在WHERE子句中进行类型转换可能导致全表...