ORACLE 查看有多个执行计划的SQL语句
2016-03-17 16:48 潇湘隐者 阅读(5578) 评论(0) 编辑 收藏 举报在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))

· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2015-03-17 Linux 克隆虚拟机引起的“Device eth0 does not seem to be present, delaying initialization”
2014-03-17 SQL SERVER 2012 修改数据库默认位置不立即生效
2014-03-17 SQL Server Reporting Services:无法检索应用程序文件。部署中的文件已损坏
2013-03-17 MERGE INTO 性能问题疑问