【问题标题】:Does Oracle have a means to show query execution plans like Sybase 'showplan'?Oracle 是否有办法显示像 Sybase 'showplan' 这样的查询执行计划?
【发布时间】:2011-12-06 03:11:49
【问题描述】:

我是一名 Sybase DBA/性能优化人员,我被要求研究 Oracle 上一些 SQL 查询的性能,看看问题是什么以及为什么它很慢。有没有类似Sybase的showplan?我需要获取查询或存储过程使用的物理 i/o 和逻辑 i/o、表扫描和索引的数量。

我曾经使用 Embarcadero,但现在没有了。

【问题讨论】:

  • 把你的问题放在标题里;不要在标题中向我们介绍自己。

标签: oracle query-optimization


【解决方案1】:

解释计划和/或 AutoTrace 是 Oracle 等效项,如果您执行查询,它将为您提供 Oracle 将使用的可能执行计划。

在 SQLPLUS 中你可以做到这一点..

SQL> set autotrace traceonly;

SQL> select * from scott.emp;

14 rows selected.

Execution Plan
----------------------------------------------------------
Plan hash value: 3956160932

--------------------------------------------------------------------------
| Id  | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT  |      |    14 |   518 |     3   (0)| 00:00:01 |
|   1 |  TABLE ACCESS FULL| EMP  |    14 |   518 |     3   (0)| 00:00:01 |
--------------------------------------------------------------------------


Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
          8  consistent gets
          0  physical reads
          0  redo size
       1415  bytes sent via SQL*Net to client
        381  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
         14  rows processed

根据详细程度和您的具体情况,这里还有其他各种可用选项..

http://www.oracle-base.com/articles/10g/SQLTrace10046TrcsessAndTkprof10g.php

【讨论】:

  • 有什么地方可以读到吗?有样品吗?就像我想展示 SELECT * FROM a, b where a.field = b.field 的计划一样。跟踪和查询计划
  • Saro - 在我看到你的评论之前更新了我上面的帖子:)。如果您想跟踪整个会话(可能是您对一个过程的完整执行),请查看我在下面提供的链接。
  • 我收到此消息“目前不支持 Traceonly 选项”。对此有什么想法吗?
  • 您使用的是哪个版本的 Oracle 和 SQLPLUS..?您是在 SQLPLUS 还是其他任何工具中执行此操作?
  • SQL 开发者版本 3.0.04
【解决方案2】:

我不确定其中是否包含所有这些,但Oracle SQL Developer 允许您输入查询并点击解释计划以查看执行计划。这包括它要做什么以及它正在使用的任何索引。

这是一个免费的工具,所以试试吧。 :)

【讨论】:

  • 我有 sql developer。我不知道你能做到这一点。那么我该怎么做呢?放置我的代码并推送哪些底部/选项?谢谢
  • 将您的查询放入工作表顶部的命令窗口。其中一个按钮是解释计划。在我的副本中,它是工作表上的第四个按钮。
  • 另外 - 您可能想使用我包含的链接来获取当前版本。版本 3(当前版本)比 Oracle 附带的版本 1 客户端功能更多。
猜你喜欢
  • 2012-09-02
  • 2016-07-18
  • 1970-01-01
  • 2012-04-28
  • 2014-08-31
  • 2012-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多