Monday, September 27, 2010

Checking explain plan of a query

set lines 180
DELETE PLAN_TABLE WHERE STATEMENT_ID = 'TEST';
commit ;


explain plan  SET STATEMENT_ID='TEST' for <Your SQL Query> ;
SELECT     SUBSTR (LPAD (' ', LEVEL - 1) || operation || ' (' || options
                   || ')',
                   1,
                   30
                  ) "Operation",
           object_name "Object", BYTES, COST, CARDINALITY "Num Rows"
      FROM plan_table
START WITH ID = 0
CONNECT BY PRIOR ID = parent_id;


scriptoutput

Operation                      Object            BYTES    COST   Num Rows
------------------------------ -------------- ---------- ------- ----------
SELECT STATEMENT ()                              7844876  145     150863
 SORT (GROUP BY)                                 7844876  145     150863
  SORT (GROUP BY)                                7844876  145     150863
   TABLE ACCESS (FULL)         xyz    7844876  57      150863


or use

explain plan  SET STATEMENT_ID='TEST' for <Your SQL Query> ;

 SELECT plan_table_output
  FROM TABLE(DBMS_XPLAN.display());


scriptoutput

  ----------------------------------------------------------------------------------------------------
| Id  | Operation            |  Name          | Rows  | Bytes | Cost  |  TQ    |IN-OUT| PQ Distrib |
----------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT     |                |   150K|  7661K|   179 |        |      |            |
|   1 |  SORT GROUP BY       |                |   150K|  7661K|   179 | 11,01  | P->S | QC (RAND)  |
|   2 |   SORT GROUP BY      |                |   150K|  7661K|   179 | 11,00  | P->P | HASH       |
|   3 |    TABLE ACCESS FULL | xyz |   150K|  7661K|    71 | 11,00  | PCWP |            |
----------------------------------------------------------------------------------------------------

Note: cpu costing is off

No comments:

Post a Comment