【发布时间】:2011-12-06 03:11:49
【问题描述】:
我是一名 Sybase DBA/性能优化人员,我被要求研究 Oracle 上一些 SQL 查询的性能,看看问题是什么以及为什么它很慢。有没有类似Sybase的showplan?我需要获取查询或存储过程使用的物理 i/o 和逻辑 i/o、表扫描和索引的数量。
我曾经使用 Embarcadero,但现在没有了。
【问题讨论】:
-
把你的问题放在标题里;不要在标题中向我们介绍自己。
我是一名 Sybase DBA/性能优化人员,我被要求研究 Oracle 上一些 SQL 查询的性能,看看问题是什么以及为什么它很慢。有没有类似Sybase的showplan?我需要获取查询或存储过程使用的物理 i/o 和逻辑 i/o、表扫描和索引的数量。
我曾经使用 Embarcadero,但现在没有了。
【问题讨论】:
解释计划和/或 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
【讨论】:
我不确定其中是否包含所有这些,但Oracle SQL Developer 允许您输入查询并点击解释计划以查看执行计划。这包括它要做什么以及它正在使用的任何索引。
这是一个免费的工具,所以试试吧。 :)
【讨论】: