今天我们DBA 一看一条SQL的执行计划就发现了问题。PL/SQL做开发的时候,怎么看执行计划啊,能看出什么?
怎么看这个东西?
------解决方案--------------------
你开发工具比如PL/SQL developer 或者Toad之类的有按钮可以看执行计划,一般F5
主要看全表扫的和cost,或者执行计划走错了,hash_join等,比如你这里有很多table access full,一般需要加索引,大表where条件里的列一般需要有索引列。有些执行计划跟预期不太一致,可以加hint,analysis table等优化。
DBA一般是从动态性能视图V$sqlarea等里抓出来最消耗资源的sql。
深入理解的话建议看下oracle的官方的书:Performance Tuning Guide and Reference,
http://download.oracle.com/docs/cd/B10501_01/server.920/a96533.pdf
------解决方案--------------------
开发工具什么的一般都有的
------解决方案--------------------
- SQL code
1.sqlplus设置参数 set atuotrace onSET AUTOTRACE OFF --No AUTOTRACE report is generated. This is the default. SET AUTOTRACE ON EXPLAIN --The AUTOTRACE report shows only the optimizer execution path. SET AUTOTRACE ON STATISTICS --The AUTOTRACE report shows only the SQL statement execution statistics. SET AUTOTRACE ON --The AUTOTRACE report includes both the optimizer execution path and the SQL statement execution statistics. SET AUTOTRACE TRACEONLY --Like SET AUTOTRACE ON, but suppresses the printing of the user's query output, if any. If STATISTICS is enabled, query data is still fetched, but not printed. 然后执行语句在语句的结果后面会有执行计划。2.sqlplus使用DBMS_XPLAN包。详尽信息见10g官方文档B19306_01\B19306_01\appdev.102\b14258\d_xplan.htm#sthref9740例子:示例:SQL> EXPLAIN PLAN FOR 2 SELECT * FROM test;已解释。SQL> SET LINESIZE 130SQL> SET PAGESIZE 0SQL> SELECT * FROM table(DBMS_XPLAN.DISPLAY);Plan hash value: 1357081020--------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |--------------------------------------| 0 | SELECT STATEMENT | | 16 | 48 | 3 (0)| 00:00:01 || 1 | TABLE ACCESS FULL| TEST | 16 | 48 | 3 (0)| 00:00:01 |--------------------------------------已选择8行。3.plsql developer 在sql window 窗口写sql,然后按F5,则会出现执行计划窗口。
------解决方案--------------------
参照http://blog.csdn.net/java3344520/archive/2010/04/22/5515497.aspx