处理一条很慢SQL语句过程
来源:互联网 发布:thinkphp 输出sql语句 编辑:程序博客网 时间:2024/06/11 21:25
select p.surplus_capital
from clspuser.crf_p2p_rpt_bill_pen_new p ,salaryuser.crf_salary_pi_account a
where p.loan_contract_no = a.loan_contract_no
and p.gz_ym = a.gz_ym;
查看该语句的执行计划如下:
SQL> select * from table(dbms_xplan.display_cursor(‘3dj0zd3kasn0f’));
PLAN_TABLE_OUTPUT
SQL_ID 3dj0zd3kasn0f, child number 0
select p.surplus_capital from clspuser.crf_p2p_rpt_bill_pen_new p
,salaryuser.crf_salary_pi_account a where p.loan_contract_no = a.loan_contract_no and p.gz_ym
= a.gz_ym
Plan hash value: 3637505838
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | | | | 5615 (100)| |
|* 1 | HASH JOIN | | 371K| 19M| 13M| 5615 (4)| 00:01:08 |
| 2 | TABLE ACCESS FULL| CRF_SALARY_PI_ACCOUNT | 371K| 9058K| | 1091 (5)| 00:00:14 |
| 3 | TABLE ACCESS FULL| CRF_P2P_RPT_BILL_PEN_NEW | 580K| 17M| | 2639 (5)| 00:00:32 |
Predicate Information (identified by operation id):
1 - access(“P”.”LOAN_CONTRACT_NO”=”A”.”LOAN_CONTRACT_NO” AND “P”.”GZ_YM”=”A”.”GZ_YM”)
已选择22行。
查询两张表的行数如下所示:
SQL> select count(*) from salaryuser.crf_salary_pi_account;
COUNT(*)
370498
SQL> select count(*) from clspuser.crf_p2p_rpt_bill_pen_new;
COUNT(*)
627097
查看统计信息:
SQL>/
OWNER NAME OBJECT_TYPE STA LAST_ANALYZED
SALARYUSER CRF_SALARY_PI_ACCOUNT TABLE NO 12-8月 -15
SQL>/
OWNER NAME OBJECT_TYPE STA LAST_ANALYZED
CLSPUSER CRF_P2P_RPT_BILL_PEN_NEW TABLE NO 12-8月 -15
统计信息是最新的,且执行计划是正确的,故无需对表重新收集统计信息。
初步拟定对clspuser.crf_p2p_rpt_bill_pen_new,salaryuser.crf_salary_pi_account 两个表建立索引。
建立语句如下:
create index idx_bill_pen_new on clspuser.crf_p2p_rpt_bill_pen_new(loan_contract_no,surplus_capital,gz_ym);
create index idx_pi_account on salaryuser.crf_salary_pi_account(loan_contract_no,gz_ym);
SQL> select * from table(dbms_xplan.display_cursor(‘3dj0zd3kasn0f’));
PLAN_TABLE_OUTPUT
SQL_ID 3dj0zd3kasn0f, child number 0
select p.surplus_capital from clspuser.crf_p2p_rpt_bill_pen_new p
,salaryuser.crf_salary_pi_account a where p.loan_contract_no = a.loan_contract_no and
p.gz_ym = a.gz_ym
Plan hash value: 1176563666
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | | | | 3400 (100)| |
|* 1 | HASH JOIN | | 371K| 19M| 13M| 3400 (3)| 00:00:41 |
| 2 | INDEX FAST FULL SCAN| IDX_PI_ACCOUNT | 371K| 9058K| | 515 (4)| 00:00:07 |
| 3 | INDEX FAST FULL SCAN| IDX_BILL_PEN_NEW | 580K| 17M| | 1000 (3)| 00:00:12 |
Predicate Information (identified by operation id):
1 - access(“P”.”LOAN_CONTRACT_NO”=”A”.”LOAN_CONTRACT_NO” AND “P”.”GZ_YM”=”A”.”GZ_YM”)
已选择22行。
通过对执行计划的观察,访问走的是INDEX FAST FULL SCAN,而不是之前的TABLE ACCESS FULL,cost和time明显降低,性能明显提升。
- 处理一条很慢SQL语句过程
- 一条SQL语句的优化过程
- 写一条sql语句的过程
- SQL语句处理的过程
- Oracle SQL语句处理过程
- Oracle SQL语句处理过程
- SQL语句的处理过程
- 请高手帮写一条SQL语句或存储过程
- oracle下一条SQL语句的优化过程(比较详细)
- oracle下一条SQL语句的优化过程(比较详细)
- 一条SQL语句!
- 一条sql语句
- 一条SQL语句
- 一条SQL语句
- 一条SQL语句
- 一条SQL语句研究
- 一条sql语句
- 一条SQL语句
- 关于json格式的转化以及eval的使用
- 2017年东莞理工学院程序编程选拔赛
- Activity+Fragment基本框架(主要解决重启后,出现重叠的问题)
- Docker
- 数据结构 C语言 哈希 链地址法
- 处理一条很慢SQL语句过程
- mybatis传参数
- springmvc配置总结
- with..as oracle的用法
- 2017西安交大ACM小学期数论 [等差数列]
- 如何入门微信小程序开发,有哪些学习资料?
- ffmpeg 使用滤镜——代码实现
- Java实现:在N个乱序的数组中找第K大的数
- Uva 108 Maximum Sum