最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

Oracle生成和显示执行计划的方法

来源:动视网 责编:小采 时间:2020-11-09 10:51:48
文档

Oracle生成和显示执行计划的方法

Oracle生成和显示执行计划的方法:Oracle 生成和显示执行计划的方法,除执行过的sql会在内存中生成执行计划外,还可以通过explain plan让优化器对sql语句进行解析, 生成执行计划 一条合法的语句在执行之后,就会在内存中至少产生一条执行计划,可以从视图v$sql_plan查询。每一条执
推荐度:
导读Oracle生成和显示执行计划的方法:Oracle 生成和显示执行计划的方法,除执行过的sql会在内存中生成执行计划外,还可以通过explain plan让优化器对sql语句进行解析, 生成执行计划 一条合法的语句在执行之后,就会在内存中至少产生一条执行计划,可以从视图v$sql_plan查询。每一条执


Oracle 生成和显示执行计划的方法,除执行过的sql会在内存中生成执行计划外,还可以通过explain plan让优化器对sql语句进行解析,

生成执行计划

一条合法的语句在执行之后,就会在内存中至少产生一条执行计划,可以从视图v$sql_plan查询。每一条执行计划对于一个游标。一条语句生产的第一个游标的CHILD_NUMBER(即v$sql_plan中的CHILD_NUMBER)为0,同一条sql语句可能因为环境或版本等其他因素不同而产生不同的执行计划,也就是说一条sql可能有多个CHILD_NUMBER。

除执行过的sql会在内存中生成执行计划外,还可以通过explain plan让优化器对sql语句进行解析,生成查询计划。执行explain plan命令后,Oracle会将解释生成的执行计划插入sys.plan_table$(10g之前,表名为plan_table;10g之后,通过公共同义词plan_table指向sys.plan_table$)中。explain plan产生的执行计划不会在语句执行时重用,而是以类似explain plan for的形式在缓存中。

显示执行计划

通过DBMS_XPLAN包显示执行计划(推荐)

DBMS_XPLAN含有5个函数用于输出格式化的执行计划,如下:

display:显示explain plan命令解释的执行计划

display_cursor:显示内存中的执行计划

display_awr:awr历史数据中的执行计划

display_sqlset:SQL优化集中语句的执行计划

display_sql_plan_baseline:SQL执行计划基线

display的用法

语法:

DBMS_XPLAN.DISPLAY( table_name IN VARCHAR2 DEFAULT 'PLAN_TABLE', statement_id IN VARCHAR2 DEFAULT NULL, format IN VARCHAR2 DEFAULT 'TYPICAL', filter_preds IN VARCHAR2 DEFAULT NULL);

参数:

ParameterDescription

table_name

存储查询计划的表名,默认值为PLAN_TABLE

statement_id

要显示查询计划的SQL语句的ID,如果为空,就会获取最近一条被解释的语句

format

输出格式,有以下几种预定义的格式可选择,,还可以自定义(这里不多说):

  • BASIC:基本格式,内容最少.

  • TYPICAL: 典型格式,通常够用,默认格式

  • SERIAL: 串行执行格式,这种格式和典型格式输出内容基本一致,只是对于并行查询,不会输出相关的并行内容

  • ALL: 完全格式,输出内容相对完整

  • filter_preds

    该参数用谓词条件过滤存储执行计划的表,例如'plan_id = 10或cost>100(显示估算代价大于100的操作),该值默认为空

    示例:

    用explain plan执行sql语句:

    EXPLAIN PLAN FOR
    SELECT * FROM emp e, dept d
    WHERE e.deptno = d.deptno
    AND e.ename='benoit';
    Display the plan using the DBMS_XPLAN.DISPLAY table function

    SET LINESIZE 130
    SET PAGESIZE 0
    SELECT * FROM table(DBMS_XPLAN.DISPLAY);
    输出结果如下

    Plan hash value: 3693697075
    ---------------------------------------------------------------------------
    | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
    ---------------------------------------------------------------------------
    | 0 | SELECT STATEMENT | | 1 | 57 | 6 (34)| 00:00:01 |
    |* 1 | HASH JOIN | | 1 | 57 | 6 (34)| 00:00:01 |
    |* 2 | TABLE ACCESS FULL| EMP | 1 | 37 | 3 (34)| 00:00:01 |
    | 3 | TABLE ACCESS FULL| DEPT | 4 | 80 | 3 (34)| 00:00:01 |
    ---------------------------------------------------------------------------

    Predicate Information (identified by operation id):
    ---------------------------------------------------
    1 - access("E"."DEPTNO"="D"."DEPTNO")
    2 - filter("E"."ENAME"='benoit')

    15 rows selected.

    文档

    Oracle生成和显示执行计划的方法

    Oracle生成和显示执行计划的方法:Oracle 生成和显示执行计划的方法,除执行过的sql会在内存中生成执行计划外,还可以通过explain plan让优化器对sql语句进行解析, 生成执行计划 一条合法的语句在执行之后,就会在内存中至少产生一条执行计划,可以从视图v$sql_plan查询。每一条执
    推荐度:
    标签: 出现 方法 oracle
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top