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

 我来答
龙氏风采
2017-01-19 · 知道合伙人互联网行家
龙氏风采
知道合伙人互联网行家
采纳数:5849 获赞数:12817
从事互联网运营推广,5年以上互联网运营推广经验,丰富的实战经

向TA提问 私信TA
展开全部
  在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
  GROUP BY SQL_ID
  HAVING COUNT(1) >=2
  ORDER BY 2 DESC ;
  --根据具体的SQL_ID查看对应的SQL语句
  SELECT * FROM V$SQL
  WHERE SQL_ID=:SQL_ID;
  可以通过下面SQL语句查询对应SQL的所有执行计划或部分执行计划,分析出现多个执行计划的原因
  --查询SQL所有执行计划
  SELECT * FROM TABLE(SYS.DBMS_XPLAN.DISPLAY_CURSOR('9x4fggs2mzu0m',null))
  --查询SQL的CHILD NUMBER为0的执行计划
  SELECT * FROM TABLE(SYS.DBMS_XPLAN.DISPLAY_CURSOR('9x4fggs2mzu0m',0))
  --查询SQL的CHILD NUMBER为1的执行计划
  SELECT * FROM TABLE(SYS.DBMS_XPLAN.DISPLAY_CURSOR('9x4fggs2mzu0m',1))
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式