Re: full outer join:can somebody tell me why I receive these results?!

From: <uneboite_at_hotmail.com>
Date: Thu, 21 Feb 2008 13:42:52 -0800 (PST)
Message-ID: <5b9410e8-dbc1-4258-9e28-2aae0f8cd796@d4g2000prg.googlegroups.com>


Thanks a lot for answering this quick!!!

First the plans on 9i without the hint:

for those two queries
select *
from (select row_number() over(order by col1) as n1

           , col1
      from t1

)
full outer join (select row_number() over(order by col2) as n2 , col2 from t2
)
on n1=n2

;

select *
from (select rownum as n1

           , col1
      from (select *
            from t1
            order by col1
           )

)
full outer join (select rownum as n2 , col2 from (select * from t2 order by col2 )
)
on n2=n1

;

I have those plans:

Operation	Object Name	Rows	Bytes	Cost	Object Node	In/Out	PStart	PStop
SELECT STATEMENT Optimizer Mode=CHOOSE		2 K	 	17
  VIEW		2 K	64 K	17
    UNION-ALL
      HASH JOIN OUTER		1 K	52 K	12
        VIEW		409  	6 K	6
          WINDOW SORT		409  	1 K	6
            TABLE ACCESS FULL	PROVENCHER.T1	409  	1 K	2
        VIEW		409  	6 K	6
          WINDOW SORT		409  	1 K	6
            TABLE ACCESS FULL	PROVENCHER.T2	409  	1 K	2
      HASH JOIN ANTI		405  	2 K	5
        TABLE ACCESS FULL	PROVENCHER.T2	409  	1 K	2
        TABLE ACCESS FULL	PROVENCHER.T1	409  	1 K	2


Operation	Object Name	Rows	Bytes	Cost	Object Node	In/Out	PStart	PStop
SELECT STATEMENT Optimizer Mode=CHOOSE		2 K	 	17
  VIEW		2 K	64 K	17
    UNION-ALL
      HASH JOIN OUTER		1 K	52 K	12
        VIEW		409  	6 K	6
          COUNT
            VIEW		409  	1 K	6
              SORT ORDER BY		409  	1 K	6
                TABLE ACCESS FULL	PROVENCHER.T1	409  	1 K	2
        VIEW		409  	6 K	6
          COUNT
            VIEW		409  	1 K	6
              SORT ORDER BY		409  	1 K	6
                TABLE ACCESS FULL	PROVENCHER.T2	409  	1 K	2
      HASH JOIN ANTI		405  	11 K	5
        VIEW		409  	6 K	2
          COUNT
            TABLE ACCESS FULL	PROVENCHER.T2	409  	1 K	2
        VIEW		409  	5 K	2
          COUNT
            TABLE ACCESS FULL	PROVENCHER.T1	409  	 	2



Then I've changed both select,
I added what you asked, so they look like this:

select /*+ NO_QUERY_TRANSFORMATION */ *
from (select row_number() over(order by col1) as n1

           , col1
      from t1

)
full outer join (select row_number() over(order by col2) as n2 , col2 from t2
)
on n1=n2

;

select /*+ NO_QUERY_TRANSFORMATION */ *
from (select rownum as n1

           , col1
      from (select *
            from t1
            order by col1
           )

)
full outer join (select rownum as n2 , col2 from (select * from t2 order by col2 )
)
on n2=n1

;

first explain plan:

Operation	Object Name	Rows	Bytes	Cost	Object Node	In/Out	PStart	PStop
SELECT STATEMENT Optimizer Mode=CHOOSE		2 K	 	17
  VIEW		2 K	64 K	17
    UNION-ALL
      HASH JOIN OUTER		1 K	52 K	12
        VIEW		409  	6 K	6
          WINDOW SORT		409  	1 K	6
            TABLE ACCESS FULL	PROVENCHER.T1	409  	1 K	2
        VIEW		409  	6 K	6
          WINDOW SORT		409  	1 K	6
            TABLE ACCESS FULL	PROVENCHER.T2	409  	1 K	2
      HASH JOIN ANTI		405  	2 K	5
        TABLE ACCESS FULL	PROVENCHER.T2	409  	1 K	2
        TABLE ACCESS FULL	PROVENCHER.T1	409  	1 K	2

second explain plan:
Operation	Object Name	Rows	Bytes	Cost	Object Node	In/Out	PStart	PStop
SELECT STATEMENT Optimizer Mode=CHOOSE		2 K	 	17
  VIEW		2 K	64 K	17
    UNION-ALL
      HASH JOIN OUTER		1 K	52 K	12
        VIEW		409  	6 K	6
          COUNT
            VIEW		409  	1 K	6
              SORT ORDER BY		409  	1 K	6
                TABLE ACCESS FULL	PROVENCHER.T1	409  	1 K	2
        VIEW		409  	6 K	6
          COUNT
            VIEW		409  	1 K	6
              SORT ORDER BY		409  	1 K	6
                TABLE ACCESS FULL	PROVENCHER.T2	409  	1 K	2
      HASH JOIN ANTI		405  	11 K	5
        VIEW		409  	6 K	2
          COUNT
            TABLE ACCESS FULL	PROVENCHER.T2	409  	1 K	2
        VIEW		409  	5 K	2
          COUNT
            TABLE ACCESS FULL	PROVENCHER.T1	409  	 	2

I have to humbly admit that although I understand reading explain plans a bit, i'm by far not expert enough to understand the current issue
only by reading these plans with and without the hint...

any further help will be appreciated... Received on Thu Feb 21 2008 - 15:42:52 CST

Original text of this message