create table  
as 
select  empno ȣ, ename , 'C70' ȸ
     , '' , '...' ּ, '123-' || empno ó
     , to_char(to_date('20050101','yyyymmdd')+rownum*20000,'yyyymmdd') 񽺸
from    emp
where   rownum <= 10;

create index _idx01 on (ȸ);


create table ü̷
as
select a.ȣ, b., b., b.ü, b.üݾ
from   a
    ,(select to_char(to_date('20050101', 'yyyymmdd')+rownum*2, 'yyyymmdd') 
           , to_char(to_date('20050102', 'yyyymmdd')+rownum*2, 'yyyymmdd') 
           , round(dbms_random.value(1, 12)) ü
           , round(dbms_random.value(100, 1000)) * 100 üݾ
      from   dual
      connect by level <= 100000) b;


exec dbms_stats.gather_table_stats(user, '');

exec dbms_stats.gather_table_stats(user, 'ü̷');


select min() MN_, max() MX_ from ü̷;

create index ü̷_idx01 on ü̷(ȣ, , );

select /*+ ordered use_nl(b) */ a., a., a.ּ, a.ó, b.üݾ
from    a, ü̷ b
where  a.ȸ = 'C70'
and    b.ȣ = a.ȣ
and    '20050131' between b. and b.;


drop index ü̷_idx01;

create index ü̷_idx01 on ü̷(ȣ, , );

select /*+ ordered use_nl(b) */ a., a., a.ּ, a.ó, b.üݾ
from    a, ü̷ b
where  a.ȸ = 'C70'
and    b.ȣ = a.ȣ
and    '20050131' between b. and b.;



select /*+ ordered use_hash(b) */ 
       a., a., a.ּ, a.ó, b.üݾ
from    a, ü̷ b
where   b.ȣ = a.ȣ
and    '20050131' between b. and b.;


select /*+ ordered use_nl(b) */ a., a., a.ּ, a.ó, b.üݾ
from    a, ü̷ b
where  a.ȸ = 'C70'
and    b.ȣ = a.ȣ
and    a.񽺸 between b. and b.;


select min(񽺸) ּҸ, max(񽺸) ִ븸 from ;



select a., a., a.ּ, a.ó
     ,(select /*+ index_desc(b ü̷_idx01) */ üݾ 
       from   ü̷ b
       where  b.ȣ = a.ȣ
       and    a.񽺸 between  and 
       and    rownum <= 1) üݾ
from    a
where  ȸ = 'C70';



select /*+ ordered use_nl(b) rowid(b) */ a.*, b.üݾ, b.ü
from  (select a., a., a.ּ, a.ó
            ,(select /*+ index_desc(b ü̷_idx01) */ rowid rid
              from   ü̷ b
              where  b.ȣ = a.ȣ
              and    a.񽺸 between  and 
              and    rownum <= 1) rid
       from    a
       where  ȸ = 'C70') a, ü̷ b
where  b.rowid = a.rid;



select /*+ ordered use_nl(b) rowid(b) */ 
       a., a., a.ּ, a.ó, b.üݾ, b.ü
from    A, ü̷ B
where  a.ȸ = 'C70'
and    b.rowid = (select /*+ index_desc(c ü̷_idx01) */ rowid
                  from   ü̷ c
                  where  c.ȣ = a.ȣ
                  and    a.񽺸 between  and 
                  and    rownum <= 1);



select /*+ ordered use_hash(b) */ 
       a., a., a.ּ, a.ó, b.üݾ, b.ü
from    a, ü̷ b
where b.ȣ = a.ȣ
and    a.񽺸 between b. and b.;







