Escolar Documentos
Profissional Documentos
Cultura Documentos
Summary:
EXPLAIN PLAN overview
TKPROF overview
Why???
Reading execution plans
Reading TKPROF reports
www.dbspecialists.com/presentations
Execution Plan
----------------------------------------------------------
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=4 Card=1 Bytes=39)
1 0 NESTED LOOPS (Cost=4 Card=1 Bytes=39)
2 1 NESTED LOOPS (Cost=3 Card=1 Bytes=27)
3 2 TABLE ACCESS (BY INDEX ROWID) OF 'INVOICE_ITEMS' (Cost
=2 Card=1 Bytes=15)
4 3 INDEX (UNIQUE SCAN) OF 'INVOICE_ITEMS_PK' (UNIQUE) (
Cost=1 Card=2)
5 2 TABLE ACCESS (BY INDEX ROWID) OF 'INVOICES' (Cost=1 Ca
rd=2 Bytes=24)
6 5 INDEX (UNIQUE SCAN) OF 'INVOICES_PK' (UNIQUE)
7 1 TABLE ACCESS (BY INDEX ROWID) OF 'CUSTOMERS' (Cost=1 Car
d=100 Bytes=1200)
8 7 INDEX (UNIQUE SCAN) OF 'CUSTOMERS_PK' (UNIQUE)
OPERATION OBJECT_NAME
------------------------------ --------------
SELECT STATEMENT
SORT ORDER BY
TABLE ACCESS FULL CUSTOMERS
OPERATION OBJECT_NAME
------------------------------ --------------
SELECT STATEMENT
NESTED LOOPS
TABLE ACCESS BY INDEX ROWID INVOICES
INDEX RANGE SCAN INVOICES_DATE
TABLE ACCESS BY INDEX ROWID CUSTOMERS
INDEX UNIQUE SCAN CUSTOMERS_PK
OPERATION OBJECT_NAME
-------------------------------- ----------------
SELECT STATEMENT
SORT GROUP BY
NESTED LOOPS OUTER
HASH JOIN
TABLE ACCESS BY INDEX ROWID INVOICES
INDEX RANGE SCAN INVOICES_STATUS
TABLE ACCESS FULL CUSTOMERS
INDEX RANGE SCAN INVOICE_ITEMS_PK
OPERATION OBJECT_NAME
----------------------------------- -------------
SELECT STATEMENT
SORT ORDER BY
FILTER
TABLE ACCESS FULL CUSTOMERS
VIEW INVOICES_VIEW
FILTER
SORT GROUP BY
NESTED LOOPS
TABLE ACCESS BY INDEX ROWID INVOICES
INDEX RANGE SCAN INVS_CUST_ID
INDEX RANGE SCAN INV_ITEMS_PK
Execution Plan
------------------------------------------------
0 SELECT STATEMENT Optimizer=HINT: RULE
1 0 MERGE JOIN
2 1 SORT (JOIN)
3 2 REMOTE* SALES.ACME.COM
4 1 SORT (JOIN)
5 4 TABLE ACCESS (FULL) OF 'CUSTOMERS'
SORT JOIN
Same as the SORT GROUP BY operation, except that the input is sorted by the
join column or columns in preparation for a join using the merge join algorithm.
MERGE JOIN
Perform a join between two sets of row data using the merge join algorithm.
Inputs: two separate sets of row data. Output: the results of the join.
Oracle reads rows from both inputs in an alternating fashion and merges
together matching rows in order to generate output. The two inputs are
assumed to be sorted on the join column or columns.
Summary of Operations
We have not covered all of the execution plan operations, but we have covered
some of the most common ones:
- TABLE ACCESS FULL
- TABLE ACCESS BY INDEX ROWID
- INDEX UNIQUE SCAN
- INDEX RANGE SCAN
- NESTED LOOPS
- NESTED LOOPS OUTER
- HASH JOIN
- MERGE JOIN
- FILTER
- VIEW
- REMOTE
- SORT ORDER BY
- SORT GROUP BY
- SORT JOIN
Wrapping Up
Use EXPLAIN PLAN, queries against v$sql_plan, the autotrace facility in
SQL*Plus, or GUI tools to view execution plans.
Use TKPROF to format SQL trace files for human readability.
Execution plans and TKPROF reports give the DBA and application
developer a wealth of information that can be used to make applications
efficient and perform well.
The catch: you need to know how to interpret execution plans and TKPROF
reports in order to get any benefit from them. You also ought to know when
to use EXPLAIN PLAN versus when to query v$sql_plan.
Resources
Download this slide show, the accompanying white paper, and
many other useful presentations at:
www.dbspecialists.com/presentations
Contact Information
Roger Schrag
Database Specialists, Inc.
388 Market Street, Suite 400
San Francisco, CA 94111
Tel: 415/344-0500
Email: rschrag@dbspecialists.com
Web: www.dbspecialists.com