oracle查看SQL性能(转)

本文介绍了如何使用SQL Plus工具查看SQL执行计划及统计信息,包括设置自动跟踪以获取详细的执行信息,利用set timing on来查看SQL语句运行时间,帮助进行有效的SQL优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前总想知道SQL的运行时间,可有效地进行SQL优化,公司的DBA昨天给我们分享了一下,感觉很不错,呵呵,现在总结如下:

第一种:在SQLPLUS中:在sqlplus工具下, 

注:set autotract on 显示执行计划和统计信息:

set autotracetraceonly;只显示trace信息不显示SQL结果

SQL> set autotrace traceonly;
SQL> select t.*, t.rowid from acl_entry t;

未选定行


执行计划
----------------------------------------------------------
Plan hash value: 3539363351

-------------------------------------------------------------------------------
| Id |Operation        |Name     | Rows | Bytes | Cost (%CPU)|Time    |
-------------------------------------------------------------------------------
|  0 | SELECTSTATEMENT |          |    1 |   86|    2  (0)| 00:00:01 |
|  1 | TABLEACCESS FULL| ACL_ENTRY|    1 |   86|    2  (0)| 00:00:01 |--全表扫描,还有一种是检索。
-------------------------------------------------------------------------------


统计信息
----------------------------------------------------------
         0 recursive calls--回滚
         0 db block gets
         3 consistent gets--一致性读
         0 physical reads--如果高,在内存中没有缓存。尤其观察的是physicalreads,这项越小越好
         0 redo size
       680 bytes sent via SQL*Net to client
       326 bytes received via SQL*Net from client
         1 SQL*Net roundtrips to/from client
         0 sorts(memory)--当有排序语句时,内存中的执行时间,内存中遵循时间过时LRU算法
         0 sorts(disk)--当有排序语句时,硬盘中的执行时间,当内存不够时执行,如果值大,说明耗时

         0 rows processed

set autotrace onstatistics; 只显示统计信息

如:

SQL> set autotrace on statistics;
SQL> select t.*, t.rowid from acl_entry t;

未选定行


统计信息
----------------------------------------------------------
         1 recursive calls
         0 db block gets
         3 consistent gets
         0 physical reads
         0 redo size
       680 bytes sent via SQL*Net to client
       326 bytes received via SQL*Net from client
         1 SQL*Net roundtrips to/from client
         0 sorts (memory)
         0 sorts (disk)
         0 rows processed

输入set timing on来设置打印sql语句的运行时间

SQL> set timing on
SQL> select t.*, t.rowid from acl_entry t;

未选定行

已用时间: 00: 00: 00.01

执行计划
----------------------------------------------------------
Plan hash value: 3539363351

-------------------------------------------------------------------------------
| Id |Operation        |Name     | Rows | Bytes | Cost (%CPU)|Time    |
-------------------------------------------------------------------------------
|  0 | SELECTSTATEMENT |          |    1 |   86|    2  (0)| 00:00:01 |
|  1 | TABLEACCESS FULL| ACL_ENTRY|    1 |   86|    2  (0)| 00:00:01 |
-------------------------------------------------------------------------------


统计信息
----------------------------------------------------------
         0 recursive calls
         0 db block gets
         3 consistent gets
         0 physical reads
         0 redo size
       680 bytes sent via SQL*Net to client
       326 bytes received via SQL*Net from client
         1 SQL*Net roundtrips to/from client
         0 sorts (memory)
         0 sorts (disk)
         0 rows processed

 注意,set autotraceon,set timing on 都需要关闭:关闭用:set autotrace off,set timingoff

 autotrace on exp--只显示执行计划。

第二种:在PL/SQL选中SQL语句---》EXPLAIN PLAN,只可以查到是全表查询还是索引查询,有的工具如:Oraclesql developer还可以看到执行时间,本人觉得最牛的还是用SQLPLUS

 

安装ORACLE客户端后,先配置NET CONFIGURATION ASSISTANT,或直接到

D:\oracle\product\10.2.0\client_2\NETWORK\ADMIN\TNSNAMES.ORA进行配置。

环境变量中配置了两个ORACLE,如果想指定其中的一个时,用:setPath=D:\oracle\product\10.2.0\client
_2\bin

tnsping sellmanager


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值