60 lines
1.2 KiB
Plaintext
60 lines
1.2 KiB
Plaintext
|
|
-- Setup
|
||
|
|
--------
|
||
|
|
drop table T1 purge;
|
||
|
|
|
||
|
|
create table T1
|
||
|
|
tablespace USERS
|
||
|
|
as
|
||
|
|
select * from dba_extents
|
||
|
|
;
|
||
|
|
|
||
|
|
drop table T2 purge;
|
||
|
|
|
||
|
|
create table T2
|
||
|
|
tablespace USERS
|
||
|
|
as
|
||
|
|
select * from dba_extents
|
||
|
|
;
|
||
|
|
|
||
|
|
|
||
|
|
insert into T1 select * from T1;
|
||
|
|
|
||
|
|
insert into T2 select * from T2;
|
||
|
|
insert into T2 select * from T2;
|
||
|
|
insert into T2 select * from T2;
|
||
|
|
|
||
|
|
commit;
|
||
|
|
|
||
|
|
create index I1 on T1(OWNER) tablespace USERS;
|
||
|
|
create index I2 on T2(OWNER) tablespace USERS;
|
||
|
|
|
||
|
|
exec dbms_stats.delete_table_stats(user,'T1');
|
||
|
|
exec dbms_stats.delete_table_stats(user,'T2');
|
||
|
|
|
||
|
|
exec dbms_stats.gather_table_stats(user,'T1', method_opt=>'for all columns size 1');
|
||
|
|
exec dbms_stats.gather_table_stats(user,'T2', method_opt=>'for all columns size 1');
|
||
|
|
|
||
|
|
exec dbms_stats.gather_table_stats(user,'T1', method_opt=>'for all columns size skewonly');
|
||
|
|
exec dbms_stats.gather_table_stats(user,'T2', method_opt=>'for all columns size skewonly');
|
||
|
|
|
||
|
|
|
||
|
|
set lines 250 pages 999
|
||
|
|
alter system flush shared_pool;
|
||
|
|
|
||
|
|
var MYOWNER varchar2(30);
|
||
|
|
|
||
|
|
execute :MYOWNER:='DBSNMP';
|
||
|
|
|
||
|
|
select /*+ GATHER_PLAN_STATISTICS MONITOR */
|
||
|
|
count(1)
|
||
|
|
from
|
||
|
|
T1,
|
||
|
|
T2
|
||
|
|
where
|
||
|
|
T1.OWNER=:MYOWNER and
|
||
|
|
T1.BLOCKS=T2.BLOCKS
|
||
|
|
/
|
||
|
|
|
||
|
|
select * from table(dbms_xplan.display_cursor(null,null,'ALLSTATS LAST +PEEKED_BINDS +PARALLEL +PARTITION +COST +BYTES'));
|
||
|
|
|