數據存儲時,最好是將數據與索引分開存儲在不同的表空間中,因為建立索引是要占用硬盤存儲空間的,索引表空間和數據表空間建立是一樣的
下面語句用於移動索引到指定表空間:
alter index ha_wxzj.index_name rebuild tablespace ha_wxzj_index_data;
也可以利用以下語句獲得某個schema下移動索引表空間的所有語句:
復制代碼 代碼如下:
select 'alter index '||owner||'.'||index_name||' rebuild tablespace ha_wxzj_index_data ;'
from dba_indexes
where table_owner='ha_wxzj'
order by index_name;
有一點需要注意的是,一旦把表和索引放在不同表空間后,在創建新表時,如果表有主鍵或唯一約束,記得要指定到索引的表空間
create table tmp(
mon varchar2(6) ,
idno varchar2(10) ,
constraint pk_name primary key (idno )
using index tablespace ha_wxzj_index_data,
constraint uk_name unique (mon)
using index tablespace index_tbs
) ;
--給表增加主鍵,並指定唯一索引的表空間
alter table tt
add constraint tt_id primary key (ID)
using index
TABLESPACE SKY_INDEX_DATA
select index_name,table_name,tablespace_name From user_indexes where tablespace_name='HA_WXZJ_DATA'
--游標方式 重建索引到指定表空間
declare cursor cursor_index
is select index_name from user_indexes where tablespace_name='HA_WXZJ_DATA'; --原索引表空間
begin
for indexname in cursor_index loop
execute immediate 'alter index '||indexname.index_name|| ' rebuild tablespace HA_WXZJ_INDEX_DATA'; --指定表空間
end loop;
end;