zoukankan      html  css  js  c++  java
  • 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
    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))
  • 相关阅读:
    公司真题-字节跳动
    全素组探求
    枚举
    求n个整数的最大公约数
    Ajax技术
    读文本文件
    JSTL标签库
    URL跟URi的区别
    常用的JSTL标签
    EL表达语言
  • 原文地址:https://www.cnblogs.com/kerrycode/p/5288030.html
Copyright © 2011-2022 走看看