我在我的一个Oracle数据库中有一个视图,执行时间太长.当语句运行时,它似乎没有停止.
无论如何,我们可以验证此视图的性能或我们如何检查语句会话是否"挂起"?
谢谢,N2EE
UPDATE我意识到问题在于视图中的底层查询.感谢Edwin的autotrace修复程序.
很可能执行查询的速度非常慢.
您可以使用说明计划查看如何在数据库中执行查询.
如果您有SQL*Plus,则可以使用以下语句轻松完成此操作:
set autotrace traceonly
然后输入查询,您将获得有关查询的统计信息,如下所示:
SQL> set autotrace traceonly SQL> select * from o_drops; 4461 rows selected. Execution Plan ---------------------------------------------------------- Plan hash value: 3820245448 ----------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ----------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 4287 | 280K| 11 (10)| 00:00:01 | | 1 | TABLE ACCESS FULL| O_DROPS | 4287 | 280K| 11 (10)| 00:00:01 | ----------------------------------------------------------------------------- Statistics ---------------------------------------------------------- 1 recursive calls 0 db block gets 333 consistent gets 48 physical reads 0 redo size 337057 bytes sent via SQL*Net to client 2316 bytes received via SQL*Net from client 299 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 4461 rows processed
如果其中一个资源非常高,则可以重写查询和/或将索引添加到您正在使用的表中.