Re: does oracle us both block and row level nested loop joins?
- From: Tanel Põder <tanel.poder.003@xxxxxxx>
- To: <oracle-l@xxxxxxxxxxxxx>
- Date: Fri, 30 Jul 2004 19:04:11 +0300
> I'm fairly certain that Oracle uses row level nested loop joins when
tables are indexes.
> However, does it do 'block' level nested loop joins to improve performance
when
> tables are not indexed. I do not know how to test for this.
Try this test:
create table t1(a, b) as select rownum, cast('x' as char(1000)) from
sys.obj$ where rownum <=50;
create table t2(a, b) as select rownum, cast('x' as char(1000)) from
sys.obj$ where rownum <=500;
--create index i1 on t1(a);
--create index i2 on t2(a);
analyze table t1 compute statistics;
analyze table t2 compute statistics;
select table_name, blocks from user_tables where table_name in ('T1', 'T2');
set autot trace exp stat
select /*+ USE_NL(t1, t2) */ t1.*, t2.* from t1, t2 where t1.a = t2.a;
set autot off
You see from consistent gets that all of the blocks in T2 are opened 50
times (total LIOs = the amount of rows in T1 * blocks in T2 + some
overhead).
At least this experiment shows that there is no block prefetching or row
caching used and all joining is done row-by-row.
About indexed NL joins and prefetching, uncomment the above create index
clauses one by one and see the results then (there was a quite interesting
thread about index prefetching in NL joins couple of months ago here..)
Tanel.
----------------------------------------------------------------
Please see the official ORACLE-L FAQ: http://www.orafaq.com
----------------------------------------------------------------
To unsubscribe send email to: oracle-l-request@xxxxxxxxxxxxx
put 'unsubscribe' in the subject line.
--
Archives are at http://www.freelists.org/archives/oracle-l/
FAQ is at http://www.freelists.org/help/fom-serve/cache/1.html
-----------------------------------------------------------------
- Follow-Ups:
- Re: does oracle us both block and row level nested loop joins?
- From: Tanel Põder
- References:
- does oracle us both block and row level nested loop joins?
- From: ryan . gaffuri
Other related posts:
- » does oracle us both block and row level nested loop joins?
- » Re: does oracle us both block and row level nested loop joins?
- » Re: does oracle us both block and row level nested loop joins?
- Re: does oracle us both block and row level nested loop joins?
- From: Tanel Põder
- does oracle us both block and row level nested loop joins?
- From: ryan . gaffuri