news 2026/6/25 8:21:54

Oracle获取SQL执行计划

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Oracle获取SQL执行计划

Oracle查看SQL执行计划以及执行开销

EXPLAIN PLAN是Oracle提供的一种静态分析SQL执行路径的方法,它通过生成逻辑执行计划帮助开发者和DBA预测SQL的性能表现。

注意:EXPLAIN PLAN不会实际执行SQL,而是将优化器生成的执行计划写入PLAN_TABLE(系统临时表)。

连接Oracle

假设Oracle安装在Windows系统下,进入终端,输入下面命令:

>sqlplus 请输入用户名: system 输入口令:

终端会显示下面信息:

连接到: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.3.0.0.0

执行SQL分析语句

执行explain plan for [SQL-Statement];(SQL-Statement是想分析的SQL语句,成功执行完会显示Explained或者已解释。举个例子,假设SQL-Statement是select * from nasdaq match_recognize( partition by ticker ORDER BY ts measures match_number() as mn all rows per match pattern(start_r end_r) define end_r as end_r.open - start_r.open > 10);则输入

SQL>explain planforselect*2from nasdaq3match_recognize(4partition by ticker5ORDER BY ts6measures match_number()as mn7all rows per match8pattern(start_r end_r)9define end_r as end_r.open - start_r.open>1010);

此时,结果已经写入到临时表中。可以通过select * from table(DBMS_XPLAN.DISPLAY);查看结果。为了方便展示,取结果时,设置一下linesize(注意set好要换行,否则会报错),此时取出的结果如下:

SQL>setlinesize150SQL>SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------ Planhashvalue:3978417298---------------------------------------------------------------------------------------------------------------|Id|Operation|Name|Rows|Bytes|Cost(%CPU)|Time|---------------------------------------------------------------------------------------------------------------|0|SELECT STATEMENT||8706K|747M|132K(1)|00:00:06||1|VIEW||8706K|747M|132K(1)|00:00:06||2|MATCH RECOGNIZE SORT DETERMINISTIC FINITE AUTOMATON||8706K|431M|132K(1)|00:00:06||3|TABLE ACCESS FULL|NASDAQ|8706K|431M|20371(2)|00:00:01|--------------------------------------------------------------------------------------------------------------- 已选择10行。

你也可以执行下面的命令查看列投影信息。

setlinesize150SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(NULL, NULL,'ALL'));

查看物理执行计划的耗时

-- 设置统计级别ALTERSESSIONSETstatistics_level=ALL;-- 执行你的SQLselect/*+ MONITOR */*fromnasdaq match_recognize(measures match_number()asmnallrowspermatchpattern(start_r end_r)define end_rasend_r.ticker=start_r.tickerandend_r.open>start_r.open+10);-- 立即查看执行计划和耗时SETlinesize=200SELECT*FROMTABLE(DBMS_XPLAN.display_cursor(format=>'ALLSTATS LAST'));

此时会显示每个物理算子累计的执行开销。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/24 7:53:36

关于平抛运动的推导

平抛运动是指物体以一定的初速度沿水平方向抛出,仅受重力作用下的运动。它是一种常见的二维运动形式,结合了水平方向的匀速直线运动和竖直方向的自由落体运动。现在对平抛运动进行推导。分别在 xxx 方向和 yyy 方向上考虑 xxx 方向:由于不考虑…

作者头像 李华
网站建设 2026/6/23 22:06:26

从零开始构建类型安全的Feather图标库

从零开始构建类型安全的Feather图标库 【免费下载链接】feather 项目地址: https://gitcode.com/gh_mirrors/fea/feather 在现代前端开发中,图标作为用户界面的重要组成部分,其质量和易用性直接影响开发效率和用户体验。Feather图标库以其简洁优…

作者头像 李华
网站建设 2026/6/24 14:21:26

AWR1843毫米波雷达Python实时数据处理与可视化实战指南

AWR1843-Read-Data-Python-MMWAVE-SDK-3 项目为开发者提供了一套完整的解决方案,能够通过Python语言实时读取AWR1843毫米波雷达数据并进行可视化展示。无论您是从事智能交通、安防监控还是工业自动化领域,这款工具都能帮助您快速构建雷达应用原型。 【免…

作者头像 李华
网站建设 2026/6/24 10:49:18

LazyVim:告别配置烦恼的Neovim解决方案

LazyVim:告别配置烦恼的Neovim解决方案 【免费下载链接】LazyVim Neovim懒人配置。 项目地址: https://gitcode.com/GitHub_Trending/la/LazyVim 从配置困境到编程自由 作为一名开发者,你是否曾经在Neovim的配置迷宫中迷失方向?面对琳…

作者头像 李华
网站建设 2026/6/23 4:27:42

如何进行分库分表

如何进行分库分表?核心认知:分库分表不是 MySQL 的调参问题,而是“数据模型 路由规则 业务改造”的系统工程。 这篇从“要不要拆 → 怎么拆 → 怎么查 → 有啥坑”四个维度来讲。一、为什么要分库分表? 先说直白一点&#xff1a…

作者头像 李华
网站建设 2026/6/25 1:16:14

1小时打造DroidCam智能门铃原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个智能门铃原型系统,使用DroidCam作为摄像头,实现:1) 访客检测自动拍照;2) 手机推送通知;3) 双向语音通话功能&…

作者头像 李华