You are on page 1of 4

drop table sales_invisible_index;

create table sales_invisible_index


(order_id

number not null,

sale_date date,
cust_id

number,

prod_id

number,

remarks

varchar2(128))

insert into sales_invisible_index values (1,to_date('15-JAN-2007','DD-MONYYYY'),1,1,'First Sale in 2007');


insert into sales_invisible_index values (2,to_date('15-JUL-2008','DD-MONYYYY'),1,2,'Sale in 2008');
insert into sales_invisible_index values (3,to_date('15-JUL-2009','DD-MONYYYY'),1,3,'Sale in 2009');
insert into sales_invisible_index values (4,to_date('15-JUL-2010','DD-MONYYYY'),1,2,'Sale in 2010');
insert into sales_invisible_index values (5,to_date('15-AUG-2010','DD-MONYYYY'),2,3,'Cust_2 in 2010');
insert into sales_invisible_index values (6,to_date('01-FEB-2011','DD-MONYYYY'),1,2,'Feb 2011');
insert into sales_invisible_index values (7,to_date('01-MAR-2011','DD-MONYYYY'),2,3,'Mar 2011');
insert into sales_invisible_index values (8,to_date('01-APR-2011','DD-MONYYYY'),2,3,'Apr 2011');
insert into sales_invisible_index values (9,to_date('01-MAY-2011','DD-MONYYYY'),3,3,'Cust_3 !');
insert into sales_invisible_index values (10,to_date('01-FEB-2012','DD-MONYYYY'),1,2,'Feb 2012');

insert into sales_invisible_index values (11,to_date('01-MAR-2012','DD-MONYYYY'),2,3,'Mar 2012');


insert into sales_invisible_index values (12,to_date('01-APR-2012','DD-MONYYYY'),2,3,'Apr 2012');
insert into sales_invisible_index values (13,to_date('01-MAY-2012','DD-MONYYYY'),3,3,'Cust_3 !');
insert into sales_invisible_index values (14,to_date('01-FEB-2013','DD-MONYYYY'),1,2,'Feb 2013');
insert into sales_invisible_index values (15,to_date('01-MAR-2013','DD-MONYYYY'),2,3,'Mar 2013');
insert into sales_invisible_index values (16,to_date('01-APR-2013','DD-MONYYYY'),2,3,'Apr 2013');
insert into sales_invisible_index values (17,to_date('01-MAY-2013','DD-MONYYYY'),3,3,'Cust_3 !');
insert into sales_invisible_index values (18,to_date('01-FEB-2014','DD-MONYYYY'),1,2,'Feb 2014');
insert into sales_invisible_index values (19,to_date('01-MAR-2014','DD-MONYYYY'),2,3,'Mar 2014');
insert into sales_invisible_index values (20,to_date('01-APR-2014','DD-MONYYYY'),2,3,'Apr 2014');
insert into sales_invisible_index values (21,to_date('01-MAY-2014','DD-MONYYYY'),3,3,'Cust_3 !');

commit;

select INDEX_NAME,PARTITIONED from user_indexes where table_name =


'SALES_INVISIBLE_INDEX';

-- Visible Index
create unique index sales_visible_index on
SALES_INVISIBLE_INDEX(ORDER_ID,sale_date);

-- Checking the Index and Partition Status


select INDEX_NAME,PARTITIONED from user_indexes where table_name =
'SALES_INVISIBLE_INDEX';

-- Invisible Index
create index sales_invisible_index on SALES_INVISIBLE_INDEX(ORDER_ID) invisible;

-- Checking the Index and Partition Status


select INDEX_NAME,PARTITIONED,status from user_indexes where table_name =
'SALES_INVISIBLE_INDEX';

-- Collecting Stats
exec
dbms_stats.gather_table_stats('','SALES_INVISIBLE_INDEX',estimate_percent=>100,
granularity=>'ALL');

--Checking invisible Index Usage when the Optimizer is recomended to use invisible
Indexes
set linesize 1000
alter session set optimizer_use_invisible_indexes=True;
explain plan for select * from SALES_INVISIBLE_INDEX where ORDER_ID = 20;
select * from table(dbms_xplan.display);

--Checking invisible Index Usage when the Optimizer is recomended NOT to use
invisible Indexes
alter session set optimizer_use_invisible_indexes=false;
explain plan for select * from SALES_INVISIBLE_INDEX where ORDER_ID = 20;
select * from table(dbms_xplan.display);

--12c New Feature


-- Can create a different type of Index on the same column
create bitmap index bitmap_sales_invisible_index on
SALES_INVISIBLE_INDEX(ORDER_ID) invisible;

alter session set optimizer_use_invisible_indexes=True;


explain plan for select * from SALES_INVISIBLE_INDEX where ORDER_ID = 20;
select * from table(dbms_xplan.display);

-- col COLUMN_NAME format a20


select
a.owner,a.table_name,a.Index_name,a.Index_type,b.COLUMN_NAME,b.COLUMN_POS
ITION from
dba_indexes a, dba_ind_columns b
where a.Index_name = b.index_name
and a.table_name = b.table_name
and a.table_name = 'SALES_INVISIBLE_INDEX';

You might also like