对于非常复杂语句的SQL TUNING 问题,我们都是遵循下面的思路:
1. 先检查之前有没有好的执行计划,如果之前的执行计划是比较好的,那么可以使用 SQL Profile 来固定好的执行计划。
比如可以根据 note 1400903.1 的步骤,类似如下:
a). 我们有两个语句
select ename from scott.emp where ename='MILLER';
它的SQL_ID是 329d885bxvrcr ,plan hash value是 3045807146
select /*+ FULL (EMP) */ ename from scott.emp where ename='MILLER';
它的SQL_ID是 4f74t4ab7rd5y ,plan hash value是 2872589290
我们的目的就是把 4f74t4ab7rd5y 的plan转移给 329d885bxvrcr
b). 调用 coe_load_sql_profile.sql 来转移plan
比如:
SQL> @coe_load_sql_profile.sql
Parameter 1:
ORIGINAL_SQL_ID (required)
Enter value for 1: 329d885bxvrcr =======>此处填写原始的SQL的SQL_ID
Parameter 2:
MODIFIED_SQL_ID (required)
Enter value for 2: 4f74t4ab7rd5y =======>此处填写带hint的SQL的SQL_ID
Parameter 3:
PLAN_HASH_VALUE (required)
Enter value for 3: 2872589290 =======>此处填写带hint的SQL的plan hash value (期望的plan)
此时SQL Profile就产生了
c). 您可以再次验证原来的SQL的plan是否就已经按照我们的期望改变了
2. 如果之前也没有好的执行计划,那么接下来需要收集统计信息;因为优化器是根据统计信息来生成执行计划,所以最新的统计信息经常可以修正不好的执行计划。
3. 如果收集统计信息也没有能够让 SQL 性能变好,那么接下来需要使用 SQL Tuning Advisory 来帮我们优化,看是否可以找到一些建议。
我注意到您实际上已经尝试过这种方式了。
4. 如果上面的方法都不能解决问题,那么接下来就需要从 SQL 语句本身入手。
通过联系应用团队修改 SQL 逻辑来进一步优化了。
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- Oracle RAC Rolling Patching
Oracle RAC Rolling Patching
26-03-03 - 如何做好软件项目需求分析?
如何做好软件项目需求分析?
26-03-03 - Oracle incarnation
Oracle incarnation
26-03-03 - Oracle 11g 测试停库对job的影响
Oracle 11g 测试停库对job的影响
26-03-03 - 经典故障:四个雷,3*2*2*3种随机方法的特殊恢复案例
经典故障:四个雷,3*2*2*3种随机方法的特殊恢复案例
26-03-03 - Oracle 闪回数据库测试
Oracle 闪回数据库测试
26-03-03 - Oracle Goldengate(ogg) 12c认证考试流程
Oracle Goldengate(ogg) 12c认证考试流程
26-03-03 - Oracle Gateway for SQL Server时2PC分布式事务异常处理
- 关于Oracle Text索引
关于Oracle Text索引
26-03-03 - RAC等待事件:gc buffer busy acquire
RAC等待事件:gc buffer busy acquire
26-03-03
