以前总想知道SQL的运行时间,可有效地进行SQL优化,公司的DBA昨天给我们分享了一下,感觉很不错,呵呵,现在总结如下:
第一种:在SQLPLUS中:在sqlplus工具下,
注:setautotracton显示执行计划和统计信息:
setautotracetraceonly;只显示trace信息不显示SQL结果
如
SQL>setautotracetraceonly; SQL>selectt.*,t.rowidfromacl_entryt;
未选定行
执行计划 ---------------------------------------------------------- Planhashvalue:3539363351
------------------------------------------------------------------------------- |Id|Operation|Name|Rows|Bytes|Cost(%CPU)|Time| ------------------------------------------------------------------------------- |0|SELECTSTATEMENT||1|86|2(0)|00:00:01| |1|TABLEACCESSFULL|ACL_ENTRY|1|86|2(0)|00:00:01|--全表扫描,还有一种是检索。 -------------------------------------------------------------------------------
统计信息 ---------------------------------------------------------- 0recursivecalls--回滚 0dbblockgets 3consistentgets--一致性读 0physicalreads--如果高,在内存中没有缓存。尤其观察的是physicalreads,这项越小越好 0redosize 680bytessentviaSQL*Nettoclient 326bytesreceivedviaSQL*Netfromclient 1SQL*Netroundtripsto/fromclient 0sorts(memory)--当有排序语句时,内存中的执行时间,内存中遵循时间过时LRU算法 0sorts(disk)--当有排序语句时,硬盘中的执行时间,当内存不够时执行,如果值大,说明耗时
0rowsprocessed
setautotraceonstatistics;只显示统计信息
如:
SQL>setautotraceonstatistics; SQL>selectt.*,t.rowidfromacl_entryt;
未选定行
统计信息 ---------------------------------------------------------- 1recursivecalls 0dbblockgets 3consistentgets 0physicalreads 0redosize 680bytessentviaSQL*Nettoclient 326bytesreceivedviaSQL*Netfromclient 1SQL*Netroundtripsto/fromclient 0sorts(memory) 0sorts(disk) 0rowsprocessed
输入settimingon来设置打印sql语句的运行时间
SQL>settimingon SQL>selectt.*,t.rowidfromacl_entryt;
未选定行
已用时间:00:00:00.01
执行计划 ---------------------------------------------------------- Planhashvalue:3539363351
------------------------------------------------------------------------------- |Id|Operation|Name|Rows|Bytes|Cost(%CPU)|Time| ------------------------------------------------------------------------------- |0|SELECTSTATEMENT||1|86|2(0)|00:00:01| |1|TABLEACCESSFULL|ACL_ENTRY|1|86|2(0)|00:00:01| -------------------------------------------------------------------------------
统计信息 ---------------------------------------------------------- 0recursivecalls 0dbblockgets 3consistentgets 0physicalreads 0redosize 680bytessentviaSQL*Nettoclient 326bytesreceivedviaSQL*Netfromclient 1SQL*Netroundtripsto/fromclient 0sorts(memory) 0sorts(disk) 0rowsprocessed
注意,setautotraceon,settimingon都需要关闭:关闭用:setautotraceoff,settimingoff
autotraceonexp--只显示执行计划。
第二种:在PL/SQL选中SQL语句---》EXPLAINPLAN,只可以查到是全表查询还是索引查询,有的工具如:Oraclesqldeveloper还可以看到执行时间,本人觉得最牛的还是用SQLPLUS
安装ORACLE客户端后,先配置NETCONFIGURATIONASSISTANT,或直接到
D:oracleproduct10.2.0client_2NETWORKADMINTNSNAMES.ORA进行配置。
环境变量中配置了两个ORACLE,如果想指定其中的一个时,用:setPath=D:oracleproduct10.2.0client _2bin
tnspingsellmanager (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|