重建索引到指定表空间


数据存储时,最好是将数据与索引分开存储在不同的表空间中,因为建立索引是要占用硬盘存储空间的,索引表空间和数据表空间建立是一样的

下面语句用于移动索引到指定表空间:

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;

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM