iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >oracle查询执行计划的方法有哪些
  • 199
分享到

oracle查询执行计划的方法有哪些

2024-04-02 19:04:59 199人浏览 薄情痞子
摘要

这篇文章主要介绍“oracle查询执行计划的方法有哪些”,在日常操作中,相信很多人在oracle查询执行计划的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”orac

这篇文章主要介绍“oracle查询执行计划的方法有哪些”,在日常操作中,相信很多人在oracle查询执行计划的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”oracle查询执行计划的方法有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1.explain plan for

--无需执行,快捷方便

--没有统计信息,产生的逻辑读,递归

--无法判断处理了多少行

--无法判断表被访问了多少次

explain plan for select * from t,t1 where t.type=t1.object_name;

select * from table(dbms_xplan.display());

Plan hash value: 2914261090

---------------------------------------------------------------------------

| Id  | Operation   | Name | Rows  | Bytes | Cost (%CPU)| Time   |

---------------------------------------------------------------------------

|  0 | SELECT STATEMENT  |   | 1 |  221 |  244  (0)| 00:00:01 |

|*  1 |  HASH JOIN   |   | 1 |  221 |  244  (0)| 00:00:01 |

|  2 |  TABLE ACCESS FULL| T   | 1 |  142 |  122  (0)| 00:00:01 |

|  3 |  TABLE ACCESS FULL| T1  | 1 |    79 |  122  (0)| 00:00:01 |

---------------------------------------------------------------------------

Predicate InfORMation (identified by operation id):

---------------------------------------------------

  1 - access("T"."TYPE"="T1"."OBJECT_NAME")

Note

-----

  - dynamic statistics used: dynamic sampling (level=2)

19 rows selected.

2.set autotrace on

--有输出统计信息

--必须要等语句执行完之后才有结果--无法看到表被访问了多少次

set autotrace on  ---set autotrace traceonly  不输出结果--

select * from t,t1 where t.type=t1.object_name;

Execution Plan

----------------------------------------------------------

Plan hash value: 2914261090

---------------------------------------------------------------------------

| Id  | Operation   | Name | Rows  | Bytes | Cost (%CPU)| Time   |

---------------------------------------------------------------------------

|  0 | SELECT STATEMENT  |   | 1 |  221 |  244  (0)| 00:00:01 |

|*  1 |  HASH JOIN   |   | 1 |  221 |  244  (0)| 00:00:01 |

|  2 |  TABLE ACCESS FULL| T   | 1 |  142 |  122  (0)| 00:00:01 |

|  3 |  TABLE ACCESS FULL| T1  | 1 |    79 |  122  (0)| 00:00:01 |

---------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

  1 - access("T"."TYPE"="T1"."OBJECT_NAME")

Note

-----

  - dynamic statistics used: dynamic sampling (level=2)

Statistics

----------------------------------------------------------

  4  recursive calls

  0  db block gets

896  consistent gets

  0  physical reads

  0  redo size

889  bytes sent via sql*Net to client

408  bytes received via SQL*Net from client

  2  SQL*Net roundtrips to/from client

  0  sorts (memory)

  0  sorts (disk)

  3  rows processed

3.statistics_level=all

--可以从Starts看出表被访问多少次,E-Rows,A-Rows预测行数与真实行数,buffer是真实的逻辑读

---语句执行完后才有结果,无法控制不出结果,看不出递归调用和逻辑读

alter session set statistics_level=all;

select * from t,t1 where t.type=t1.object_name;

select * from table(dbms_xplan.display_cursor(null,null,'allstats last'));

----------------------------------------------------------------------------------------------------------------

| Id  | Operation   | Name | Starts | E-Rows | A-Rows | A-Time  | Buffers |  OMem |  1Mem | Used-Mem |

----------------------------------------------------------------------------------------------------------------

|  0 | SELECT STATEMENT  |   | 1 |     |   3 |00:00:00.01 | 896 |     |     |       |

|*  1 |  HASH JOIN       |   | 1 |   1 |   3 |00:00:00.01 | 896 |  1695K|  1695K|  787K (0)|

|  2 |  TABLE ACCESS FULL| T   | 1 |   1 |   4 |00:00:00.01 | 447 |     |     |       |

|  3 |  TABLE ACCESS FULL| T1  | 1 |   1 |   5 |00:00:00.01 | 449 |     |     |       |

----------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

  1 - access("T"."TYPE"="T1"."OBJECT_NAME")

Note

-----

  - dynamic statistics used: dynamic sampling (level=2)

4.dbms_xplan.display_cursor

--知道sql_id可以立即得出真是的执行计划,且可以直接得出

--没有相关的统计信息(逻辑读等)--无法判断执行了多少次--无法得出表被访问了多少次

5qn0b7zft4s04

select * from table(dbms_xplan.display_cursor('sql_id'))--共享池获取

select * from table(dbms_xplan.display_awr('sql_id'))--awr性能视图中获取

select * from table(dbms_xplan.display_cursor('5qn0b7zft4s04'))

select * from table(dbms_xplan.display_awr('5qn0b7zft4s04'))

Plan hash value: 2914261090

---------------------------------------------------------------------------

| Id  | Operation   | Name | Rows  | Bytes | Cost (%CPU)| Time   |

---------------------------------------------------------------------------

|  0 | SELECT STATEMENT  |   |   |   |  244 (100)|   |

|*  1 |  HASH JOIN   |   | 1 |  221 |  244  (0)| 00:00:01 |

|  2 |  TABLE ACCESS FULL| T   | 1 |  142 |  122  (0)| 00:00:01 |

|  3 |  TABLE ACCESS FULL| T1  | 1 |    79 |  122  (0)| 00:00:01 |

---------------------------------------------------------------------------

Predicate Information (identified by operation id):

---------------------------------------------------

  1 - access("T"."TYPE"="T1"."OBJECT_NAME")

Note

-----

  - dynamic statistics used: dynamic sampling (level=2)

5.10046 trace跟踪

--可以看出语句的等待事件,可以看出sql中的函数调用,

--可以看出处理的行数以及物理读--解析时间以及执行时间

--方便跟踪整个程序包

alter session set events '10046 trace name context forever,level 12';  开启跟踪

执行语句

alter session set events '10046 trace name context off';

找到文件

tkprof trc文件 目标文件 sys=no sort=prsela,exeela,fchela

[oracle@oracle1 ~]$ cat 1.txt

TKPROF: Release 19.0.0.0.0 - Development on Wed Mar 11 10:25:48 2020

Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved.

Trace file: NGENPR_ora_6661.trc

Sort options: prsela  exeela  fchela 

********************************************************************************

count    = number of times OCI procedure was executed

cpu      = cpu time in seconds executing

elapsed  = elapsed time in seconds executing

disk    = number of physical reads of buffers from disk

query    = number of buffers Gotten for consistent read

current  = number of buffers gotten in current mode (usually for update)

rows    = number of rows processed by the fetch or execute call

********************************************************************************

OVERALL TOTALS FOR ALL NON-RECURSIVE STATEMENTS

call    count      cpu    elapsed      disk      query    current        rows

------- ------  -------- ---------- ---------- ---------- ----------  ----------

Parse        2      0.00      0.00          0        138          0          0

Execute      2      0.00      0.00          0          0          0          0

Fetch        2      0.00      0.00          0        760          0          3

------- ------  -------- ---------- ---------- ---------- ----------  ----------

total        6      0.00      0.00          0        898          0          3

Misses in library cache during parse: 1

Elapsed times include waiting on following events:

  Event waited on                            Times  Max. Wait  Total Waited

  ----------------------------------------  Waited  ----------  ------------

  Disk file operations I/O                        2        0.00          0.00

  SQL*Net message to client                      3        0.00          0.00

  SQL*Net message from client                    3        8.24        13.24

OVERALL TOTALS FOR ALL RECURSIVE STATEMENTS

call    count      cpu    elapsed      disk      query    current        rows

------- ------  -------- ---------- ---------- ---------- ----------  ----------

Parse        3      0.00      0.00          0          0          0          0

Execute      3      0.00      0.00          0          0          0          0

Fetch        3      0.00      0.00          0        136          0          2

------- ------  -------- ---------- ---------- ---------- ----------  ----------

total        9      0.00      0.00          0        136          0          2

Misses in library cache during parse: 3

Misses in library cache during execute: 1

    2  user  SQL statements in session.

    3  internal SQL statements in session.

    5  SQL statements in session.

********************************************************************************

Trace file: NGENPR_ora_6661.trc

Trace file compatibility: 12.2.0.0

Sort options: prsela  exeela  fchela 

      1  session in tracefile.

      2  user  SQL statements in trace file.

      3  internal SQL statements in trace file.

      5  SQL statements in trace file.

      5  unique SQL statements in trace file.

    167  lines in trace file.

      5  elapsed seconds in trace file.

6 awrsqlrpt

@?/rdbms/admin/awrsqlrpt

begin  end snap

sql_id

六种方法的差异

1.如果结果出不来,只能用1

2.比较简单的方法是1或者2

3.观察多个执行计划只能用4和6

4.如果语句复杂,里面涉及到函数等,只能用5

5.真实的执行计划不能用1

6.想获取表被访问的次数,只能用3

到此,关于“oracle查询执行计划的方法有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

您可能感兴趣的文档:

--结束END--

本文标题: oracle查询执行计划的方法有哪些

本文链接: https://www.lsjlt.com/news/62870.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • oracle查询执行计划的方法有哪些
    这篇文章主要介绍“oracle查询执行计划的方法有哪些”,在日常操作中,相信很多人在oracle查询执行计划的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”orac...
    99+
    2022-10-18
  • Oracle查询执行计划
    执行计划(Execution Plan)也叫查询计划(Query Plan),它是数据库执行SQL语句的具体步骤和过程。SQL查询语句的执行计划主要包括: ● 访问表的方式。数据库通过索引或全表扫描等方式访问表中的数据。...
    99+
    2023-04-03
    Oracle查询执行计划 Oracle执行计划查询
  • Oracle查询执行计划怎么实现
    这篇文章主要介绍“Oracle查询执行计划怎么实现”,在日常操作中,相信很多人在Oracle查询执行计划怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Oracle查询执行计划怎么实现”的疑惑有所帮助!...
    99+
    2023-07-05
  • oracle中查看执行计划的常用方法
    本篇内容介绍了“oracle中查看执行计划的常用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本文介绍...
    99+
    2022-10-18
  • Oracle里的常见执行计划有哪些
    小编给大家分享一下Oracle里的常见执行计划有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!与表访问相关的执行计划Orac...
    99+
    2022-10-18
  • oracle中如何查看SQL的执行计划方法
    这篇文章主要介绍了oracle中如何查看SQL的执行计划方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Oracle查看SQL执行计划的方...
    99+
    2022-10-18
  • Oracle获取执行计划方法
    获取执行计划的6种方法   1. explain plan for获取;   2. set autotrace on ;  &...
    99+
    2022-10-18
  • Oracle中直方图对执行计划的影响有哪些
    这篇文章主要介绍Oracle中直方图对执行计划的影响有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前言在Oracle数据库中,CBO会默认目标列的数据在其最小值low_valu...
    99+
    2022-10-18
  • php计划任务定时执行的方法有哪些
    1. 使用系统的crontab工具,配置定时任务。2. 使用PHP的swoole扩展中的定时器功能。3. 使用第三方的定时任务管理工...
    99+
    2023-06-12
    php计划任务 php
  • oracle执行计划的方法是什么
    本篇内容主要讲解“oracle执行计划的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“oracle执行计划的方法是什么”吧!先从最开头一直往右看,直到...
    99+
    2022-10-18
  • Oracle执行计划中常见index访问方式有哪些
    小编给大家分享一下Oracle执行计划中常见index访问方式有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧![SQL]SELECT COUNT(*)  FROM F...
    99+
    2022-10-19
  • 获得执行计划方法-一 ORACLE AUTOTRACE
    ORACLE sql trace    AUTOTRACE 命令1 SET AUTOTRACE OFF     &n...
    99+
    2022-10-18
  • MongoDB中怎么查看执行计划方法
    这期内容当中小编将会给大家带来有关MongoDB中怎么查看执行计划方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 > db.che...
    99+
    2022-10-18
  • Oracle SQL执行计划异常的处理方法
    这篇文章主要介绍“Oracle SQL执行计划异常的处理方法”,在日常操作中,相信很多人在Oracle SQL执行计划异常的处理方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2022-10-18
  • oracle中怎么查看sql执行计划的执行顺序
    这篇文章主要讲解了“oracle中怎么查看sql执行计划的执行顺序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“oracle中怎么查看sql执行计划的执行顺...
    99+
    2022-10-18
  • mysql执行计划知识点有哪些
    这篇文章主要讲解了“mysql执行计划知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql执行计划知识点有哪些”吧! The DESCRI...
    99+
    2022-10-19
  • oracle怎么查看SQL执行计划的顺序
    本篇内容介绍了“oracle怎么查看SQL执行计划的顺序”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!查看...
    99+
    2022-10-18
  • Oracle中怎么查看执行计划的命令
    今天就跟大家聊聊有关Oracle中怎么查看执行计划的命令,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在SQL*PLUS(PL/SQL的命令窗口和S...
    99+
    2022-10-18
  • mysql 获取执行计划的方法
    mysql 获取执行计划方法:1.通过explain进行查看sql的执行计划;2.通线程正在执行的sql查看该sql的执行计划; explain进行查看sql的执行计划相对简单,其实通线程正在执行的sq...
    99+
    2022-10-18
  • MySql中怎么使用explain查询SQL的执行计划
    这篇文章主要介绍MySql中怎么使用explain查询SQL的执行计划,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!explain命令是查看查询优化器如何决定执行查询的主要方法。这个...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作