查看在数据库中实际执行时的解析计划
来源:互联网 发布:软件测试看什么书 编辑:程序博客网 时间:2024/06/05 07:22
现象:有一条sql在plsql中执行起来非常快47ms,但通过java程序执行的时候很慢,执行了87279ms ,通过执行计划看在plsql中执行命中索引消耗很少,在程序中执行的执行计划不知怎么得到.
可以通过 select * from table(dbms_xplan.display_awr('45m6cx0g6dmwu'));这个命令获取在java程序执行时的解析计划.
45m6cx0g6dmwu 这个id是通过v$session表获取的sql_id.
执行sql如下:
---------------# 2015-12-28 11:09:59:157 | took 87279ms | statement | connection 1
SELECT l.ID,
p.REQUESTER,
l.WORKFLOWID,
l.CURRENTACTIVITY,
l.CURRENTACTIVITYID,
l.PREVACTIVITY,
l.ACCEPTER,
l.STATUS,
l.SENDER,
l.SENDERNAME,
l.CREATETIME,
l.PROPOSAL,
l.companyid,
l.companyname,
l.authorizername
FROM T_APPROVE_LOG l
left join T_APPROVE_PROCESS p
on p.workflowid = l.workflowid
WHERE p.PARENTWORKFLOWID = 18407004
and p.PARENTWORKFLOWID > 0
order by p.workflowid, l.id;
SELECT l.ID,
p.REQUESTER,
l.WORKFLOWID,
l.CURRENTACTIVITY,
l.CURRENTACTIVITYID,
l.PREVACTIVITY,
l.ACCEPTER,
l.STATUS,
l.SENDER,
l.SENDERNAME,
l.CREATETIME,
l.PROPOSAL,
l.companyid,
l.companyname,
l.authorizername
FROM T_APPROVE_LOG l
left join T_APPROVE_PROCESS p
on p.workflowid = l.workflowid
WHERE p.PARENTWORKFLOWID = 18407004
and p.PARENTWORKFLOWID > 0
order by p.workflowid, l.id;
在plsql中执行的解析计划如下:
在java中执行的解析计划如下:
最终解决的方式是:重建相关的索引.
现象:有一条sql在plsql中执行起来非常快47ms,但通过java程序执行的时候很慢,执行了87279ms ,通过执行计划看在plsql中执行命中索引消耗很少,在程序中执行的执行计划不知怎么得到.
可以通过 select * from table(dbms_xplan.display_awr('45m6cx0g6dmwu'));这个命令获取在java程序执行时的解析计划.
45m6cx0g6dmwu 这个id是通过v$session表获取的sql_id.
执行sql如下:
---------------# 2015-12-28 11:09:59:157 | took 87279ms | statement | connection 1
SELECT l.ID,
p.REQUESTER,
l.WORKFLOWID,
l.CURRENTACTIVITY,
l.CURRENTACTIVITYID,
l.PREVACTIVITY,
l.ACCEPTER,
l.STATUS,
l.SENDER,
l.SENDERNAME,
l.CREATETIME,
l.PROPOSAL,
l.companyid,
l.companyname,
l.authorizername
FROM T_APPROVE_LOG l
left join T_APPROVE_PROCESS p
on p.workflowid = l.workflowid
WHERE p.PARENTWORKFLOWID = 18407004
and p.PARENTWORKFLOWID > 0
order by p.workflowid, l.id;
SELECT l.ID,
p.REQUESTER,
l.WORKFLOWID,
l.CURRENTACTIVITY,
l.CURRENTACTIVITYID,
l.PREVACTIVITY,
l.ACCEPTER,
l.STATUS,
l.SENDER,
l.SENDERNAME,
l.CREATETIME,
l.PROPOSAL,
l.companyid,
l.companyname,
l.authorizername
FROM T_APPROVE_LOG l
left join T_APPROVE_PROCESS p
on p.workflowid = l.workflowid
WHERE p.PARENTWORKFLOWID = 18407004
and p.PARENTWORKFLOWID > 0
order by p.workflowid, l.id;
在plsql中执行的解析计划如下:
在java中执行的解析计划如下:
0 0
- 查看在数据库中实际执行时的解析计划
- 查看PostgreSQL数据库中SQL语句的执行计划
- 在Oracle中简单的查看SQL执行计划
- 格式化v$sql_plan查看实际执行计划
- Oracle如何查看SQL实际执行计划
- ORACLE数据库查看执行计划的方法
- ORACLE数据库查看执行计划的方法
- ORACLE数据库查看执行计划的方法
- ORACLE数据库查看执行计划的方法
- ORACLE数据库查看执行计划的方法
- ORACLE数据库查看执行计划的方法
- ORACLE数据库查看执行计划的方法
- ORACLE数据库查看执行计划的方法
- ORACLE--数据库查看执行计划的方法
- ORACLE数据库查看执行计划的方法
- 如何在sqlplus中查看oracle数据库sql语句执行计划,执行时间和统计信息
- 查看mysql中SQL的执行计划
- 如何查看数据库执行计划
- bestcoder题解
- 『Python』序列学习总结之四——字典
- Codeforces 118D Caesar's Legions (dp)
- Android数据存储之文件存储
- 九度oj A+B 1010,1015
- 查看在数据库中实际执行时的解析计划
- COCOS学习笔记--序列帧动画
- 算法:冒泡排序和选择排序
- ZOJ 3203 Light Bulb (三分)
- 论架构师的职责
- LogisticRegression
- 地理空间距离计算优化
- 滴滴产品经理面试
- 美团推荐算法实践