数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

Oracle中如何把表和索引放在不同的表空间里


发布日期:2019年06月26日
 
Oracle中如何把表和索引放在不同的表空间里
Oracle中并没有区分表空间里放的是表还是索引所有当数据量比较小时完全可以把表和索引放在同一个表空间里但随着数据量的增大最好还是把表和索引分开存储在不同的表空间里

因为
)提高性能
尽量把表和索引的表空间存储在不同在磁盘上把两类不同IO性质的数据分开放这样可以提高磁盘的IO总体性能

)便于管理试想一下如果索引的数据文件损坏只要创建索引即可不会引起数据丢失的问题

下面语句用于移动索引的表空间

复制代码 代码如下:
alter index INDEX_OWNERINDEX_NAME rebuild tablespace NEW_TBS;


也可以利用以下语句获得某个schema下移动索引表空间的所有语句

复制代码 代码如下:
select alter index ||owner||||index_name|| rebuild tablespace NEW_TBS;
from dba_indexes
where table_owner=SCHEMA_NAME
order by index_name;


有一点需要注意的是一旦把表和索引放在不同表空间后在创建新表时如果表有主键或唯一约束记得要指定到索引的表空间可以参考下面的例子

复制代码 代码如下:
create table tmp(
MON VARCHAR()
IDNO VARCHAR()
constraint pk_name primary key ( MON IDNO )
using index tablespace index_tbs
CONSTRAINT uk_name UNIQUE (MON)
using index tablespace index_tbs
) ;

上一篇:oracle数据库如何创建自增列的技巧教程

下一篇:Oracle数据库的启动与关闭方法