【案例】Oracle性能优化之将not exists更改为外连接
时间:2016-10-22 22:21 来源:Oracle研究中心 作者:HTZ 点击:
次
天萃荷净
将not exists更改为外连接,运维DBA反映当前Oracle数据库环境中有一条SQL语句占用CPU较高,通过SQL语句的执行计划来优化该语句降低CPU占用。
主机CPU一直100%,其中有一条SQL,每秒同时有15进程正在执行,并且性能还不好,要想降低CPU,就得先把这条SQL搞定Oracle oracleplus.net,估计搞定这条SQL,CPU大概可以降到70%以下。
1.原始SQL的执行性能如下:
SQL> SELECT BILLFLOW_ID, PACKAGE_ID, FILE_CNT, BILLING_CYCLE_ID
2 FROM (select * from B_FILE_PACKAGE ORDER BY CREATED_DATE) a
3 where not exists (select *
4 from B_PACKAGE_STATE_TRANS b
5 where b.package_id = a.package_id
6 and b.process_id = 11081)
7 and A.STATE = ‘RDY’
8 AND BILLFLOW_ID in (6, 25)
9 and rownum < 1000;
Execution Plan
———————————————————-
Plan hash value: 2380269418
———————————————————————————————————-
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
———————————————————————————————————-
| 0 | SELECT STATEMENT | | 999 | 57942 | | 5752 (1)| 00:01:10 |
|* 1 | COUNT STOPKEY | | | | | | |
| 2 | NESTED LOOPS ANTI | | 1000 | 58000 | | 5752 (1)| 00:01:10 |
| 3 | VIEW | | 5666 | 254K| | 82 (2)| 00:00:01 |
| 4 | SORT ORDER BY | | 1304K| 41M| 70M| 18767 (2)| 00:03:46 |
|* 5 | TABLE ACCESS FULL| B_FILE_PACKAGE | 1304K| 41M| | 7086