我是Sybase DBA /性能优化器,并被要求查看Oracle上一些SQL查询的性能,看看问题是什么以及它为什么慢。有没有类似于Sybase的showplan?我需要获取物理i / o和逻辑i / o的数量,表扫描和索引查询或存储过程使用。
我曾经使用过Embarcadero,我不再拥有它了。
答案 0 :(得分:4)
说明计划和/或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
答案 1 :(得分:1)
我不确定是否所有内容都可用,但Oracle SQL Developer允许您查询并点击解释计划以查看执行计划。这包括它将要执行的操作以及它正在使用的任何索引。
这是一款免费工具,请试一试。 :)