文件名称:执行计划之EXPLAIN-oracle基础讲义
文件大小:4.17MB
文件格式:PPT
更新时间:2024-05-12 07:15:54
orcle基础讲义
执行计划之EXPLAIN Explain可以用来迅速方便地查出对于给定SQL语句中的查询数据是如何得到的即搜索路径(我们通常称为Access Path)。从而使我们选择最优的查询方式达到最大的优化效果。 常规使用语法: explain PLAN [ SET STATEMENT_ID [=] < string literal > ] [ INTO < table_name > ] FOR < sql_statement > 其中: STATEMENT_ID:是一个唯一的字符串,把当前执行计划与存储在同一PLAN中的其它执行计划区别开来。 TABLE_NAME:是plan表名,它结构如前所示,你可以任意设定这个名称。 SQL_STATEMENT:是真正的SQL语句。 安 装 要使用EXPLAIN首先要执行相应的脚本,创建出Explain_plan表。 具体脚本执行如下: $ORACLE_HOME/rdbms/admin/utlxplan.sql (UNIX) 该脚本后会生成一个表这个程序会创建一个名为plan_table的表。 授 权 SQL> grant all on plan_table to public;--授权所有用户 举例: SQL>explain plan set statement_id='T_TEST' for select * from t_test; SQL> Explained 执行下面语句可以查询到执行计划 SQL>SELECT A.OPERATION,OPTIONS,OBJECT_NAME,OBJECT_TYPE,ID,PARENT_ID 2 FROM PLAN_TABLE a 3 WHERE STATEMENT_ID='T_TEST' 4 ORDER BY Id; 也可以用这句话 select * from table(dbms_xplan.display); 可以把所有PLAN_TABLE里的数据罗列出来。 如: Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=6 Card=1 Bytes=110) 1 0 SORT (AGGREGATE) 2 1 NESTED LOOPS (Cost=6 Card=1 Bytes=110) 3 2 MERGE JOIN (CARTESIAN) (Cost=4 Card=1 Bytes=74) 4 3 TABLE ACCESS (FULL) OF 'TB_LVY_SBZS100' (Cost=2 Card =1 Bytes=31) 5 3 BUFFER (SORT) (Cost=2 Card=1 Bytes=43) 6 5 TABLE ACCESS (FULL) OF 'TB_LVY_DECLAREDOC' (Cost=2 Card=1 Bytes=43) 7 2 TABLE ACCESS (BY INDEX ROWID) OF 'TB_LVY_DECLAREDOC' (Cost=2 Card=1 Bytes=36) 8 7 INDEX (UNIQUE SCAN) OF 'TBLVYDECLAREDOC_DECLAREDOCID' (UNIQUE) Statistics ---------------------------------------------------------- 0 recursive calls --循环递归次数 0 db block gets―请求的数据块在buffer能满足的个数 6675 consistent gets --逻辑IO用于读表并计算行数, 数据请求总数在回滚段Buffer中 45 physical reads �C从磁盘读到Buffer Cache数据块数量 0 redo size �C产生的redo日志大小 217 bytes sent via SQL*Net to client 276 bytes received via SQL*Net from client 2 SQL*Net roundtrips to/from client 1 sorts (memory) 0 sorts (disk) 1 rows processed *