失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > ORACLE 查看有多个执行计划的SQL语句

ORACLE 查看有多个执行计划的SQL语句

时间:2019-11-09 02:23:35

相关推荐

ORACLE 查看有多个执行计划的SQL语句

在SQL优化过程,有时候需要查看哪些SQL具有多个执行计划(Multiple Executions Plans for the same SQL statement),因为同一个SQL有多个执行计划一般意味着代码有问题或某些其它原因,例如,SQL语句使用绑定变量,但是绑定变量的类型或长度可能不一致会导致同一SQL出现不同执行计划。

--查看数据库里面有多个执行计划的SQL语句的SQL_ID

SELECT SQL_ID, COUNT(1) AS PLAN_NUM

FROM V$SQL

GROUPBY SQL_ID

HAVINGCOUNT(1) >=2

ORDERBY 2 DESC ;

--根据具体的SQL_ID查看对应的SQL语句

SELECT * FROM V$SQL

WHERE SQL_ID=:SQL_ID;

可以通过下面SQL语句查询对应SQL的所有执行计划或部分执行计划,分析出现多个执行计划的原因

--查询SQL所有执行计划

SELECT * FROMTABLE(SYS.DBMS_XPLAN.DISPLAY_CURSOR('9x4fggs2mzu0m',null))

--查询SQL的CHILD NUMBER为0的执行计划

SELECT * FROMTABLE(SYS.DBMS_XPLAN.DISPLAY_CURSOR('9x4fggs2mzu0m',0))

--查询SQL的CHILD NUMBER为1的执行计划

SELECT * FROMTABLE(SYS.DBMS_XPLAN.DISPLAY_CURSOR('9x4fggs2mzu0m',1))

如果觉得《ORACLE 查看有多个执行计划的SQL语句》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。