SQL优化【基础01】-生成执行计划及计划中参数列的含义
2014-07-30 21:16
435 查看
基础01-生成执行计划 --对于11G平时最常用的是table函数+dbms_xplan包,其它方式如autot traceonly也偶尔用,下面就来介绍dbms_xplan --explan plan for...,这个只是预估计划,除非明显连接方式错误,否则有时帮忙并不大,所以最直接还是用dbms_xplan 方法(1) alter session set statistics_level=all; exec sql; select * from table(dbms_xplan.display_cursor(null,null,'allstats last')); 方法(2) exec sql(加入hint /*+ gather_plan_statistics */) select * from table(dbms_xplan.display_cursor(null,null,'allstats last')); --最常用的几个参数,操作下便知 allstats last --最后一次统计,不用漏了last,否则就是累加值了; all --一般看计划,SQL_ID,PLAN_HASH_VALUE advanced --一般拿来看outline_data信息和绑定变量 --方法(1)示例 SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production PL/SQL Release 11.2.0.2.0 - Production CORE 11.2.0.2.0 Production TNS for Linux: Version 11.2.0.2.0 - Production NLSRTL Version 11.2.0.2.0 - Production SQL> alter session set statistics_level=all; Session altered. SQL> select t1.status,t2.status 2 from t1,t2 3 where t1.object_id=t2.object_id 4 and t1.object_id=99; no rows selected SQL> select * from table(dbms_xplan.display_cursor(null,null,'allstats last')); PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ SQL_ID 581vna1k8tkk7, child number 0 ------------------------------------- select t1.status,t2.status from t1,t2 where t1.object_id=t2.object_id and t1.object_id=99 Plan hash value: 2959412835 ---------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | OMem | 1Mem | Used-Mem | ---------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | | 0 |00:00:00.01 | 3 | | | | |* 1 | HASH JOIN | | 1 | 1 | 0 |00:00:00.01 | 3 | 963K| 963K| 150K (0)| |* 2 | TABLE ACCESS FULL| T2 | 1 | 1 | 0 |00:00:00.01 | 3 | | | | |* 3 | TABLE ACCESS FULL| T1 | 0 | 12 | 0 |00:00:00.01 | 0 | | | | ---------------------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - access("T1"."OBJECT_ID"="T2"."OBJECT_ID") 2 - filter("T2"."OBJECT_ID"=99) 3 - filter("T1"."OBJECT_ID"=99) Note ----- - dynamic sampling used for this statement (level=2) 27 rows selected. --方法(2)示例 SQL> select /*+ gather_plan_statistics */t1.status,t2.status 2 from t1,t2 3 where t1.object_id=t2.object_id 4 and t1.object_id=99; no rows selected SQL> @allstat--(放在文件中:select * from table(dbms_xplan.display_cursor(null,null,'allstats last'));) PLAN_TABLE_OUTPUT ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ SQL_ID 27qqjb8bsq4vc, child number 0 ------------------------------------- select /*+ gather_plan_statistics */t1.status,t2.status from t1,t2 where t1.object_id=t2.object_id and t1.object_id=99 Plan hash value: 2959412835 ---------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | OMem | 1Mem | Used-Mem | ---------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 1 | | 0 |00:00:00.01 | 3 | | | | |* 1 | HASH JOIN | | 1 | 1 | 0 |00:00:00.01 | 3 | 963K| 963K| 154K (0)| |* 2 | TABLE ACCESS FULL| T2 | 1 | 1 | 0 |00:00:00.01 | 3 | | | | |* 3 | TABLE ACCESS FULL| T1 | 0 | 12 | 0 |00:00:00.01 | 0 | | | | ---------------------------------------------------------------------------------------------------------------- Predicate Information (identified by operation id): --------------------------------------------------- 1 - access("T1"."OBJECT_ID"="T2"."OBJECT_ID") 2 - filter("T2"."OBJECT_ID"=99) 3 - filter("T1"."OBJECT_ID"=99) Note ----- - dynamic sampling used for this statement (level=2) 27 rows selected. --接下来看下执行计划这些参数的含义,直接上图看了;
相关文章推荐
- JS一起学01:css复习、js基础知识、事件、参数、函数、网页换肤、if判断、className问题、浏览器执行顺序
- Oracle 执行计划中一些参数的含义
- 关于执行计划里recursivecalls,dbblockgets和consistentgets参数的解释
- 执行计划里recursive calls,db block gets和consistent gets参数的解释
- mysql 基础-show slave status命令是由哪两个配置文件组成及各个参数的含义
- [Oracle] Sql优化系列--执行计划的相关概念
- [Oracle] Sql优化系列--如何看懂执行计划
- 利用statspack来获取生成环境中top SQL及其执行计划
- (1)生成(抓取)和显示(解释)执行计划
- poj2728 (01参数规划,最优化率生成树,二分)
- 执行计划里recursive calls,db block gets和consistent gets参数的解释
- 解析ANDROID ps命令执行后各项参数的含义
- 维护计划自动备份数据库作业执行失败,会自动生成abc82作业
- 如何观察SQL Server 生成和重用执行计划
- 查看生成执行计划时peeking到的绑定变量值
- 01-java基础加强,eclipse工具使用,快捷键,断点调试,单元测试,jdk5新特性,增强for循环,集合map,list,可变参数,枚举,反射,泛型
- 利用statspack来获取生成环境中top SQL及其执行计划
- 应用程序对Sqlserver进行SQL查询使用与不使用参数对执行计划的影响
- 执行计划中的参数解释
- 不执行直接生成执行计划