Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Message from discussion CBO & different execution plans
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Charles Hooper  
View profile  
 More options Mar 12 2007, 6:44 pm
Newsgroups: comp.databases.oracle.server
From: "Charles Hooper" <hooperc2...@yahoo.com>
Date: 12 Mar 2007 15:44:03 -0700
Local: Mon, Mar 12 2007 6:44 pm
Subject: Re: CBO & different execution plans
On Mar 12, 6:16 pm, DA Morgan <damor...@psoug.org> wrote:

> Charles Hooper wrote:
> > *
> > ERROR at line 1:
> > ORA-30394: source statement identical to the destination statement
> > ORA-06512: at "SYS.DBMS_ADVANCED_REWRITE", line 29
> > ORA-06512: at "SYS.DBMS_ADVANCED_REWRITE", line 185
> > ORA-06512: at line 2

> > It would be nice to use DBMS_ADVANCED_REWRITE to add a hint, such as
> > (for the OP):
> >   /*+ LEADING (HTS_ASSAY HTS_COMPOUND_LOT HTS_ASSAY_RESULT) */

> > And leave the rest of the SQL statement alone.

> > Charles Hooper
> > PC Support Specialist
> > K&M Machine-Fabricating, Inc.

> I agree. Maybe you could fool the CBO by making some inconsequential
> change so that it would see the statement as different. For example:

> For example:
> WHERE C2+0 = x+0;

> Though, of course, that can cause unintended collateral damage.
> --
> Daniel A. Morgan
> University of Washington
> damor...@x.washington.edu
> (replace x with u to respond)
> Puget Sound Oracle Users Groupwww.psoug.org

It looks like you might have a good work around, as long as the extra
predicate does not significantly affect the cost.  Here is an example:
BEGIN
  SYS.DBMS_ADVANCED_REWRITE.DECLARE_REWRITE_EQUIVALENCE
  ( NAME             => 'T1_EQ2',
    SOURCE_STMT      => 'SELECT * FROM T1 WHERE C2=5',
    DESTINATION_STMT => 'SELECT /*+ FULL(T1) */ * FROM T1 WHERE C2=5
AND SYSDATE=SYSDATE',
    VALIDATE         => FALSE,
    REWRITE_MODE     => 'TEXT_MATCH' );
END;
/

SELECT
  *
FROM
  T1
WHERE
  C2=5;

SELECT
  *
FROM
  TABLE(DBMS_XPLAN.DISPLAY_CURSOR(NULL,NULL,'ALLSTATS'));

SQL_ID  7q30ztw0h1w4t, child number 1
-------------------------------------
SELECT   * FROM   T1 WHERE   C2=5

Plan hash value: 3332582666

--------------------------------------------------------------------------- ----------
| Id  | Operation          | Name | Starts | E-Rows | A-Rows |   A-
Time   | Buffers |
--------------------------------------------------------------------------- ----------
|*  1 |  FILTER            |      |      1 |        |    200 |
00:00:00.01 | 37 |
|*  2 |   TABLE ACCESS FULL| T1   |      1 |    200 |    200 |
00:00:00.01 | 37 |
--------------------------------------------------------------------------- -----

Predicate Information (identified by operation id):
---------------------------------------------------
   1 - filter(SYSDATE@!=SYSDATE@!)
   2 - filter("C2"=5)

And now to put the system back to normal:
EXEC SYS.DBMS_ADVANCED_REWRITE.DROP_REWRITE_EQUIVALENCE('T1_EQ2');

SQL_ID  7q30ztw0h1w4t, child number 0
-------------------------------------
SELECT   * FROM   T1 WHERE   C2=5

Plan hash value: 3586113557

--------------------------------------------------------------------------- -----------
| Id  | Operation        | Name    | Starts | E-Rows | A-Rows |   A-
Time   | Buffers |
--------------------------------------------------------------------------- -----------
|*  1 |  INDEX RANGE SCAN| IND_JT2 |      1 |    200 |    200 |
00:00:00.01 |  16 |
--------------------------------------------------------------------------- -----------

Predicate Information (identified by operation id):
---------------------------------------------------
   1 - access("C2"=5)

Charles Hooper
PC Support Specialist
K&M Machine-Fabricating, Inc.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.