温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

oracle中对于复杂的SQL语句怎么进行优化

发布时间:2021-11-04 09:28:18 来源:亿速云 阅读:194 作者:iii 栏目:关系型数据库

本篇内容主要讲解“oracle中对于复杂的SQL语句怎么进行优化”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“oracle中对于复杂的SQL语句怎么进行优化”吧!

遵循下面的思路:

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 逻辑来进一步优化了。

到此,相信大家对“oracle中对于复杂的SQL语句怎么进行优化”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI