create table t1
(id number not null
,version number not null
,create_ts timestamp not null
,modify_ts timestamp
,status varchar2(24) generated always as (NVL2("MODIFY_TS",'SUPERSEDED','LATEST'))
,id2 number not null
,yn varchar2(1) not null
,business_date date not null);
insert into t1
(id, version, create_ts, id2, yn, business_date)
select rownum
, 1
, systimestamp
, rownum
, case when mod(rownum,2) = 1 then 'Y' else 'N' end
, trunc(sysdate,'MON') + mod(rownum,10)
from dual
connect by level <= 1000;
exec dbms_stats.gather_table_stats(USER,'T1');
explain plan for
with x as
(select * from t1
union all
select * from t1)
select *
from x
where yn = 'Y';
select * from table(dbms_xplan.display);
=================================================================================
create tablespace mssm datafile '/data01/orcl19c/data/mssm.dbf' size 500M
segment space management manual
extent management local uniform size 10M;
drop table mytest;
create table mytest(x number) tablespace mssm;
create index i$mytest$x on mytest(x) tablespace mssm;
insert into mytest
select level
from dual
connect by level <= 200126;
commit;
delete mytest where x<=199000;
commit;
insert into mytest
with x as
(select level i from dual connect by level <= 199000)
select i from x where mod(i, 250) = 0;
commit;
No comments:
Post a Comment