source: http://www.dba-oracle.com/plsql/t_plsql_plans.htm
- Execution plan, statement must run to completion
- Create "plan_table" table, synonym using "utlxplan.sql" script and grant access for public
- Create public synonym for plan table
- Execution plans using the autotrace feature of SQL*Plus
- Explain plan, statement generates the execution plan for a query without executing the query itself
- For mulitple DBA's using you can set statement_id='dba1'
- Execution plan, statement must run to completion
- Create "plan_table" table, synonym using "utlxplan.sql" script and grant access for public
$ sqlplus / as sysdba SQL> @?/rdbms/admin/utlxplan.sql SQL> grant all on sys.plan_table to public;
- Create public synonym for plan table
SQL> create public synonym plan_table for sys.plan_table;
- Execution plans using the autotrace feature of SQL*Plus
SQL> set autotrace on;
SQL> set linesize 2000
SQL> select * from scott.emp;
EMPNO|ENAME |JOB | MGR|HIREDATE | SAL| COMM| DEPTNO
----------|----------|---------|----------|---------|----------|----------|----------
7369|SMITH |CLERK | 7902|17-DEC-80| 800| | 20
7499|ALLEN |SALESMAN | 7698|20-FEB-81| 1600| 300| 30
7521|WARD |SALESMAN | 7698|22-FEB-81| 1250| 500| 30
7566|JONES |MANAGER | 7839|02-APR-81| 2975| | 20
7654|MARTIN |SALESMAN | 7698|28-SEP-81| 1250| 1400| 30
7698|BLAKE |MANAGER | 7839|01-MAY-81| 2850| | 30
7782|CLARK |MANAGER | 7839|09-JUN-81| 2450| | 10
7788|SCOTT |ANALYST | 7566|19-APR-87| 3000| | 20
7839|KING |PRESIDENT| |17-NOV-81| 5000| | 10
7844|TURNER |SALESMAN | 7698|08-SEP-81| 1500| 0| 30
7876|ADAMS |CLERK | 7788|23-MAY-87| 1100| | 20
7900|JAMES |CLERK | 7698|03-DEC-81| 950| | 30
7902|FORD |ANALYST | 7566|03-DEC-81| 3000| | 20
7934|MILLER |CLERK | 7782|23-JAN-82| 1300| | 10
14 rows selected.
Execution Plan
----------------------------------------------------------
Plan hash value: 3956160932
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 14 | 532 | 3 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| EMP | 14 | 532 | 3 (0)| 00:00:01 |
--------------------------------------------------------------------------
Statistics
----------------------------------------------------------
30 recursive calls
0 db block gets
59 consistent gets
6 physical reads
0 redo size
1454 bytes sent via SQL*Net to client
419 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
5 sorts (memory)
0 sorts (disk)
14 rows processed
- Explain plan, statement generates the execution plan for a query without executing the query itself
SQL> conn scott
Enter password:
Connected.
SQL> explain plan for
2 select *
3 from emp e, dept d
4 where e.deptno=d.deptno
5 and e.ename='SMITH';
Explained.
SQL> select * from table (dbms_xplan.display);
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------
Plan hash value: 3625962092
----------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 58 | 4 (0)| 00:00:01 |
| 1 | NESTED LOOPS | | | | | |
| 2 | NESTED LOOPS | | 1 | 58 | 4 (0)| 00:00:01 |
|* 3 | TABLE ACCESS FULL | EMP | 1 | 38 | 3 (0)| 00:00:01 |
|* 4 | INDEX UNIQUE SCAN | PK_DEPT | 1 | | 0 (0)| 00:00:01 |
| 5 | TABLE ACCESS BY INDEX ROWID| DEPT | 1 | 20 | 1 (0)| 00:00:01 |
----------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - filter("E"."ENAME"='SMITH')
4 - access("E"."DEPTNO"="D"."DEPTNO")
18 rows selected.
- For mulitple DBA's using you can set statement_id='dba1'
SQL> conn scott
Enter password:
Connected.
SQL> explain plan set statement_id = 'dba1' for
2 select *
3 from emp e, dept d
4 where e.deptno=d.deptno
5 and e.ename='SMITH';
Explained.
SQL> select * from table (dbms_xplan.display);
PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------
Plan hash value: 3625962092
----------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 58 | 4 (0)| 00:00:01 |
| 1 | NESTED LOOPS | | | | | |
| 2 | NESTED LOOPS | | 1 | 58 | 4 (0)| 00:00:01 |
|* 3 | TABLE ACCESS FULL | EMP | 1 | 38 | 3 (0)| 00:00:01 |
|* 4 | INDEX UNIQUE SCAN | PK_DEPT | 1 | | 0 (0)| 00:00:01 |
| 5 | TABLE ACCESS BY INDEX ROWID| DEPT | 1 | 20 | 1 (0)| 00:00:01 |
----------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - filter("E"."ENAME"='SMITH')
4 - access("E"."DEPTNO"="D"."DEPTNO")
18 rows selected.
No comments:
Post a Comment