关注我的微信公众号:pythonislover,领取python,大数据,SQL优化相关视频资料!~
Python大数据与SQL优化笔 QQ群:771686295

查看SQL执行计划是SQL优化的第一步,所以我们要能正确掌握查看执行计划的方法。
-
用AUTOTRACE查看执行计划
SQL> set autotUsage: SET AUTOT[RACE] {OFF | ON | TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]]set auto on :运行SQL且显示执行SQL运行结果,执行计划,统计信息set auto trace :运行SQL且不显示执行SQL运行结果,显示执行计划,统计信息set auto trace exp :不运行查询SQL,但是运行DML SQL,且不显示执行SQL运行结果,统计信息,显示执行计划set auto trace stat :运行SQL且只显示统计信息set auto off :关闭AUTOTRACE
SQL> set autot onSQL> select count(*) from emp;COUNT(*)----------15Execution Plan----------------------------------------------------------Plan hash value: 2937609675-------------------------------------------------------------------| Id | Operation | Name | Rows | Cost (%CPU)| Time |-------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | 1 (0)| 00:00:01 || 1 | SORT AGGREGATE | | 1 | | || 2 | INDEX FULL SCAN| PK_EMP | 14 | 1 (0)| 00:00:01 |-------------------------------------------------------------------Statistics----------------------------------------------------------1 recursive calls0 db block gets1 consistent gets0 physical reads0 redo size526 bytes sent via SQL*Net to client524 bytes received via SQL*Net from client2 SQL*Net roundtrips to/from client0 sorts (memory)0 sorts (disk)1 rows processed########################################################SQL>set autot traceSQL> select count(*) from emp;Execution Plan----------------------------------------------------------Plan hash value: 2937609675-------------------------------------------------------------------| Id | Operation | Name | Rows | Cost (%CPU)| Time |-------------------------------------------------------------------| 0 | SELECT STATEMENT | | 1 | 1 (0)| 00:00:01 || 1 | SORT AGGREGATE | | 1 | | || 2 | INDEX FULL SCAN| PK_EMP | 14 | 1 (0)| 00:00:01 |-------------------------------------------------------------------Statistics----------------------------------------------------------0 recursive calls0 db block gets1 consistent gets0 physical reads0 redo size526 bytes sent via SQL*Net to client524 bytes received via SQL*Net from client2 SQL*Net roundtrips to/from client0 sorts (memory)0 sorts (disk)1 rows processedSQL>############################################SQL> set autot trace expSQL> select count(*) from emp;Execution Plan----------------------------------------------------------Plan hash value: 2937609675-------------------------------------------------------------------| Id | Operation | Name | Rows | Cost (%CPU)| Time |-------------------------------------------------------------------| 0 | SELECT STATE

查看SQL执行计划是优化的重要步骤。推荐使用EXPLAIN PLAN FOR来获取包含谓语信息的计划。关注 recursive calls(递归调用)、consistent gets(逻辑读)和 rows processed(返回行数)。高逻辑读可能表明优化空间,而执行次数与评估行数差距大可能造成性能问题。解决方法包括收集统计信息、使用提示或修改SQL。
最低0.47元/天 解锁文章
383

被折叠的 条评论
为什么被折叠?



