sqlplus中查看执行计划分析

合集下载

显示执行计划的语句

显示执行计划的语句

显示执行计划的语句1. 想知道数据库里执行计划咋显示?就像打开神秘宝盒一样,在SQL 里有个超酷的语句呢。

比如说我要查一个超复杂的学生成绩数据库,找出平均分最高的班级。

那我就可以用“EXPLAIN SELECT * FROMstudent_scores GROUP BY class_id ORDER BY AVG(score) DESC;”。

看,执行计划就像地图,告诉你数据库咋一步一步找答案的。

2. 显示执行计划的语句啊,就像是魔术师的揭秘咒语。

我跟你说,在Oracle数据库里,这个“EXPLAIN PLAN FOR”就超厉害。

就像我们一群小伙伴找宝藏,这个语句就像寻宝图的说明。

比如我们要找特定员工在某个项目里的工作时长总和,“EXPLAIN PLAN FOR SELECT sum(hours) FROM employee_project WHERE employee_id = 1001 ANDproject_id = 5001;”,一下子就把数据库执行的步骤“暴露”出来了。

3. 哟,你还不知道显示执行计划的语句呀?这可就像厨师做菜的步骤指南一样重要呢!在MySQL里,“EXPLAIN SELECT column1, column2 FROM your_table WHERE condition;”就这么简单。

就好比你和朋友一起整理书架,这个语句就告诉你数据库怎么在“书架”(表)里找你要的“书”(数据)。

我之前为了找有特定标签的博客文章,就用了类似的语句,一下就清楚数据库在干嘛了。

4. 显示执行计划的语句,那是数据库世界的X光机啊!拿PostgreSQL 来说,“EXPLAIN (ANALYZE, VERBOSE) SELECT * FROM products WHERE price > 100;”。

就像你要在一堆商品里找贵的东西,这个语句让你看到数据库怎么翻找这些“商品”(数据)的,它的每一个动作都逃不过你的眼睛,超神奇的呢!5. 嘿,想窥视数据库执行的小秘密吗?显示执行计划的语句就是那把钥匙。

查看ORACLE执行计划的几种常用方法

查看ORACLE执行计划的几种常用方法

查看ORACLE执⾏计划的⼏种常⽤⽅法SQL的执⾏计划实际代表了⽬标SQL在Oracle数据库内部的具体执⾏步骤,作为调优,只有知道了优化器选择的执⾏计划是否为当前情形下最优的执⾏计划,才能够知道下⼀步往什么⽅向。

执⾏计划的定义:执⾏⽬标SQL的所有步骤的组合。

我们⾸先列出查看执⾏计划的⼀些常⽤⽅法:1. explain plan命令PL/SQL Developer中通过快捷键F5就可以查看⽬标SQL的执⾏计划了。

但其实按下F5后,实际后台调⽤的就是explain plan命令,相当于封装了该命令。

explain plan使⽤⽅法:(1) 执⾏explain plan for + SQL(2) 执⾏select * from table(dbms_xplan.display);实验表准备:SQL> desc test1;Name Null Type----------------------------------------- -------- ----------------------------T1ID NOT NULL NUMBER(38)T1V VARCHAR2(10)SQL> desc test2;Name Null Type----------------------------------------- -------- ----------------------------T2ID NOT NULL NUMBER(38)T2V VARCHAR2(10)实验:SQL> set linesize 100SQL> explain plan for select t1id, t1v, t2id, t2v from test1, test2 where test1.t1id = test2.t2id;Explained.第⼀步使⽤explain plan对⽬标SQL进⾏了explain,第⼆步使⽤select * from table(dbms_xplan.display)语句展⽰出该SQL的执⾏计划。

执行计划的6种查看方法

执行计划的6种查看方法

查看SQL的6种执行计划1.获取执行计划的6种方法1. explain plan for获取;2. set autotrace on;3. statistics_level=all;4.通过dbms_xplan.display_cursor输入sql_id参数直接获取;5. 10046 trace跟踪;6. awrsqrpt.sql;1.1 explain plan for步骤1:explain plan for "你的SQL"步骤2:select * from table(dbms_xplan.display());事例:优点:无需真正执行,快捷方便缺陷:1.没有输出运行时的相关统计信息(产生多少逻辑读,多少次递归调用,多少次物理读的情况);2.无法判断是处理了多少行;3.无法判断表被访问了多少次。

因为这种执行计划,不会执行sql,只是通过采集表的信息,对sql进行了预估的一个计划。

1.2 set autotrace on步骤1:setautotrace on步骤2:在此处执行你的SQL即可,后续自然会有结果输出有以下几种情况可控选择,一般都选择第二种,我们不需要结果,只看计划。

set autotrace on:得到执行计划,输出运行结果;set autotracetraceonly:得到执行计划,不输出运行结果;set autotracetraceonly explain:得到执行计划,不输出运行结果和统计信息部分,仅展现执行计划部分;set autotracetraceonl statistics:不输出运行结果和执行计划部分,仅展现统计信息部分;事例:set timing on是否显示SQL执行时间,一般都显示。

alter system flush shared_pool;刷新共享池,我们知道共享池是编译解析执行sql的,同一个sql第二次执行的时候不会再进行解析编译,所以在看执行计划前都会先刷新共享池。

PLSQL执行计划查看

PLSQL执行计划查看

PLSQL执⾏计划查看⼀.如何查看PLSQL的执⾏计划在SQl Window窗⼝输⼊sql语句,然后按键"F5",就会进⼊执⾏计划查看界⾯。

⼆.界⾯说明⾸先我们看第⼆⾏有⼏个属性可以选“Tree”、“HTML”、“Text”、“XML”。

这⼏个⾥⾯的核⼼数据是⼀样的,不同的只是对核⼼数据的展⽰⽅式,分别为Tree、HTML、Text、XML。

这个可以根据个⼈习惯来进⾏选择。

再下⾯有⼏个列属性(每个⼈的列属性可能会不同,这个是可以在PLSQL中进⾏配置)我们⾸先看第⼀列的Description:下⾯的内容分别是我们这条SQL的执⾏步骤,缩进量最多的步骤最先执⾏,如果缩进量相同,则按照从上往下的顺序执⾏。

Object owner:对象的所有者。

Object name:对象名称。

Cost:成本花费。

这⾥可以详细地查看SQL执⾏的每⼀步的成本花费。

Time:执⾏时间。

三.如何优化SQL1.查看SQL是全表扫描还是利⽤索引查询。

假设有⼀张表t_srhs_jks,⾥⾯有1000万条数据,我们在这张表中执⾏⼀条SQL:我们可以看到根据条件dtnm=****查询数据,由于DTNM字段不是索引,因此⾸先执⾏了"TABLE ACCESS FULL",即全表搜索,然后再执⾏上⾯的"SELECT STATEMENT, GOAL = ALL ROWS"查询出所有数据⾏。

在这条SQL中的成本花费⼀共是14287(Cost=14287),执⾏时间是172(Time=172)。

然后我们对dtnm字段添加索引后再执⾏这条SQL:相⽐第⼀次执⾏,这⾥的成本花费只有5385,执⾏时间只有65,减少了将近⼀倍。

然后我们再来查看⼀下Description下的执⾏步骤:(1)INDEX RANGE SCAN:索引范围内查找。

(2)TABLE ACCESS BY INDEX ROWID:根据索引找到的ROWID来查找需要的数据。

plsql 执行计划

plsql 执行计划

plsql 执行计划PL/SQL 执行计划是一个非常重要的主题,它能够帮助开发人员和数据库管理员优化查询性能,提高数据库操作效率。

执行计划是指数据库在执行SQL语句时的具体操作步骤和执行顺序。

在PL/SQL中,我们可以使用一些特定的命令或方法来获取和分析执行计划,从而帮助我们了解查询的性能和优化潜力。

接下来,本文将详细介绍PL/SQL 执行计划的相关内容。

一、什么是执行计划?在了解PL/SQL执行计划之前,我们首先需要了解执行计划的概念。

执行计划是数据库在执行SQL语句时生成的一种操作指导,它告诉数据库具体应该如何执行查询,并给出了每个操作的执行顺序、数据访问路径、加锁等信息。

通过执行计划,我们可以深入了解查询的执行过程,从而通过调整查询或优化数据库结构来提高查询性能。

二、如何获取执行计划?在PL/SQL中,我们可以使用EXPLAIN PLAN命令来获取查询的执行计划。

EXPLAIN PLAN是一种用于分析查询性能的工具,它可以将查询转化为一个逻辑执行计划,并显示在屏幕上。

具体使用方法如下:1. 首先,我们需要将要分析的SQL语句嵌入到一个PL/SQL块中。

例如,我们要分析如下的查询语句:```sqlSELECT *FROM employeesWHERE salary > 5000;```我们可以将它嵌入到一个PL/SQL块中,如下所示:```sqlDECLAREv_sql VARCHAR2(1000);BEGINv_sql := 'SELECT * FROM employees WHERE salary > 5000';EXECUTE IMMEDIATE 'EXPLAIN PLAN FOR ' || v_sql;END;```2. 然后,我们可以通过查询表执行计划的视图来获取执行计划。

在PL/SQL中,我们可以使用DBMS_XPLAN包提供的函数来获取执行计划。

PLSQL如何使用DBMS_XPLAN查看执行计划

PLSQL如何使用DBMS_XPLAN查看执行计划

查询执行计划更靠谱的方法:DBMS_XPLAN方法使用数据源DISPLAY Explain Plan Plan TableDISPLAY_CURSOR Real Plan Shared Pool的游标缓存DISPLAY_AWR History AWR仓库基表WRH$_SQL_PLAN DISPAL Y_SQLSET SQL Tuning SET SQL Set视图PS:红色标识的方法为常用方法步骤一:使用DISPLAY_CURSOR必须要对V$SQL,V$SQLPLAN_STA TISTICS_ALL,V$SESSION,V$SQLPLAN 四张视图有权限方法如下:对于普通用户查看那这四张表只能查看同义词这四个视图对应的表,如下图:SYSONYM_NAME TABLE_NAMEV$SQL V_$SQLV$SQLPLAN_STATISTICS_ALL V_$SQLPLAN_STATISTICS_ALLV$SESSION V_$SESSIONV$SQLPLAN V_$SQLPLAN步骤二:Alter session set statistics_level = all;(收集信息有开销)步骤三:执行select SQL步骤四:查询执行计划必须要设置set serveroutput off,本人无法在PL/SQL中无法设置,所以需指定SQL_IDSelect sql_id,sql_test from V$SQLWhere sql_text not like ‘%like%’And sql_text like ‘%SQL%’;查询结果如下图:步骤五:执行DBMS_XPLAN.DISPAL Y_CURSORSelect * from table(dbms_xpaln(SQL_ID,null,’ADV ANCED ALLSTATS LAST PEEKED_BINDS’));执行结果如下:以上资料来自刘相兵老师的培训视频,个人总结整理3步骤。

ORACLE数据库查看执行计划

ORACLE数据库查看执行计划

ORACLE数据库查看执⾏计划基于ORACLE的应⽤系统很多性能问题,是由应⽤系统SQL性能低劣引起的,所以,SQL的性能优化很重要,分析与优化SQL的性能我们⼀般通过查看该SQL的执⾏计划,本⽂就如何看懂执⾏计划,以及如何通过分析执⾏计划对SQL进⾏优化做相应说明。

⼀、什么是执⾏计划(explain plan)执⾏计划:⼀条查询语句在ORACLE中的执⾏过程或访问路径的描述。

⼆、如何查看执⾏计划1: 在PL/SQL下按F5查看执⾏计划。

第三⽅⼯具toad等。

很多⼈以为PL/SQL的执⾏计划只能看到基数、优化器、耗费等基本信息,其实这个可以在PL/SQL⼯具⾥⾯设置的。

可以看到很多其它信息,如下所⽰2: 在SQL*PLUS(PL/SQL的命令窗⼝和SQL窗⼝均可)下执⾏下⾯步骤SQL>EXPLAIN PLAN FORSELECT*FROM SCOTT.EMP; --要解析的SQL脚本SQL>SELECT*FROM TABLE(DBMS_XPLAN.DISPLAY);3: 在SQL*PLUS下(有些命令在PL/SQL下⽆效)执⾏如下命令:SQL>SET TIMING ON --控制显⽰执⾏时间统计数据SQL>SET AUTOTRACE ON EXPLAIN --这样设置包含执⾏计划、脚本数据输出,没有统计信息SQL>执⾏需要查看执⾏计划的SQL语句SQL>SET AUTOTRACE OFF --不⽣成AUTOTRACE报告,这是缺省模式SQL>SET AUTOTRACE ON --这样设置包含执⾏计划、统计信息、以及脚本数据输出SQL>执⾏需要查看执⾏计划的SQL语句SQL>SET AUTOTRACE OFFSQL>SET AUTOTRACE TRACEONLY --这样设置会有执⾏计划、统计信息,不会有脚本数据输出SQL>执⾏需要查看执⾏计划的SQL语句SQL>SET AUTOTRACE TRACEONLY STAT --这样设置只包含有统计信息SQL>执⾏需要查看执⾏计划的SQL语句SET AUTOT[RACE] {ON | OFF | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]参考⽂档:SQLPlus User’s Guide and Reference Release 11.1注意:PL/SQL Developer ⼯具并不完全⽀持所有的SQL*Plus命令,像SET AUTOTRACE ON 就如此,在PL/SQL Developer⼯具下执⾏此命令会报错SQL> SET AUTOTRACE ON;Cannot SET AUTOTRACE4:SQL_TRACE可以作为参数在全局启⽤,也可以通过命令形式在具体SESSION启⽤4.1 在全局启⽤,在参数⽂件(pfile/spfile)中指定SQL_TRACE =true,在全局启⽤SQL_TRACE时会导致所有进程活动被跟踪,包括后台进程以及⽤户进程,通常会导致⽐较严重的性能问题,所以在⽣产环境要谨慎使⽤。

在Oracle中SQL语句执行计划分析

在Oracle中SQL语句执行计划分析
sql性能优化和执行计划什么是执行计划在哪里可以找到执行计划查看执行计划explainplan命令explainplan示例plantable显示plantable的内容显示plantable的内容all显示plantable的内容advancedautotraceautotrace示例autotrace统计信息使用vsqlplan视图vsqlplan的列vsqlplanstatistics视图vsqlplanstatistics提供实际执行统计信息
SQL性能优化和执行计划
什么是执行计划
在哪里可以找到执行计划
查看执行计划
EXPLAINPLAN 命令
EXPLAINPLAN 示例
PLAN_TABLE
显示PLAN_TABLE的内容
显示PLAN_TABLE的内容-ALL
显示PLAN_TABLE的内容-advanced
AUTOTRACE
AUTOTRACE-示例
AUTOTRACE-统计信息
使用v$sqn_statistics视图
V$SQL_PLAN_STATISTICS 提供实际执行统计信息:
– STATISTICS_LEVEL 设置为ALL – GATHER_PLAN_STATISTICS 提示
使用V$SQL_PLAN_STATISTICS_ALL,您可以一一 对 比优化程序的估计值与实际执行的统计值。
重要动态性能视图之间的联系
解释执行计划
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

sqlplus中查看执行计划分析
对于oracle9i,需要手工设置plustrace角色,步骤如下:
1、在SQL>connect sys/密码as sysdba (密码为:数据库所在的那台服务器的密码)
在sys用户下运行$ORACLE_HOME/sqlplus/admin/plustrce.sql
SQL>@$ORACLE_HOME/sqlplus/admin/plustrce.sql
这段sql的实际内容如下:
set echo on
drop role plustrace;
create role plustrace;
grant select on v_$sesstat to plustrace;
grant select on v_$statname to plustrace;
grant select on v_$mystat to plustrace;
grant plustrace to dba with admin option;
set echo off
以上产生plustrace角色
2、在sys用户下把此角色赋予一般用户
SQL> grant PLUSTRACE to 用户名; (用户名为:当前你登陆数据库的用户名,如:bbass)
3、然后在当前用户下运行$ORACLE_HOME/rdbms/admin/utlxplan.sql
SQL>@$ORACLE_HOME/rdbms/admin/utlxplan.sql 它会创建一个plan_table,用来存储分析SQL语句的结果。

4、SQL> set timing on
可查看SQL语句执行的用时
SQL> set autotrace on;
可查看SQL执行计划分析。

关于Autotrace几个常用选项的说明:
SET AUTOTRACE OFF ---------------- 不生成AUTOTRACE 报告,这是缺省模式
SET AUTOTRACE ON EXPLAIN ------ AUTOTRACE只显示优化器执行路径报告SET AUTOTRACE ON STATISTICS -- 只显示执行统计信息
SET AUTOTRACE ON ----------------- 包含执行计划和统计信息
SET AUTOTRACE TRACEONLY ------ 同set autotrace on,但是不显示查询
5,关闭以上功能,在SQL/PLUS的窗口运行以下命令
set time off; (说明:关闭时间显示)
set autotrace off;。

相关文档
最新文档