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

   2015-07-31 0
核心提示:Oracle中并没有区分表空间里放的是表还是索引,所有当数据量比较小时,完全可以把表和索引放在同一个表空间里,但随着数据量的增大,最好还是把表和索引分开存储在不同的表空间里

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

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

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

复制代码 代码如下:

alter index INDEX_OWNER.INDEX_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 VARCHAR2(6) ,
IDNO VARCHAR2(10) ,
constraint pk_name primary key ( MON, IDNO )
using index tablespace index_tbs,
CONSTRAINT uk_name UNIQUE (MON)
using index tablespace index_tbs
) ;

 
标签: 索引 表空间
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • Oracle的HINT可以强制指定SQL的执行计划,比如
    在Oracle中查看所有的表: select * from tab/dba_tables/dba_objects/cat; 看用户建立的表 :  select table_name from user_tables;  //当前用户的表 select table_name from all_tables;  //所有用户的表 select table_name from dba_tables;  //包
    02-10
  • Oracle 存储过程,临时表,动态SQL测试
    --创建事务级别的结果临时表create global temporary table tmp_yshy( c1 varchar2(100), c2 varchar2(100))on commit delete rows;--创建事务级别的存储sql语句的临时表create global temporary table tmp_sql( c1 varchar2(4000))on commit delete rows;测
    02-10
  • 如何在PL/SQL中修改ORACLE的字段顺序 oracle 数
    今 天下午工作中遇到的问题,我需要将A表中的数据放到它的备份表A_1中去,但A_1表中缺少两个字段,于是我就给它加上两个字段,但新加的字段会默认排在 在最后面,与表A中的字段顺序不一致,那么用insert into A_1 select * from A; 时就会出错。      
    02-10
  • Oracle,查询表的创建时间和最后修改时间sql
    SELECT * FROM USER_TABLES 查看当前用户下的表SELECT * FROM DBA_TABLES 查看数据库中所有的表SELECTCREATED,LAST_DDL_TIME from user_objects where object_name=upper('表名')SELECT CREATED, LAST_DDL_TIMEFROM USER_OBJECTSWHERE OBJECT_NAME = 'PDCA_NE
    02-10
  • 如何使用mysqldump命令导入导出数据库下的数据或表结构(远程or本地都适合)
    


            
如何正确从他人机器MySQL数据库下拷贝出.sql,再导入到自己window
    如何使用mysqldump命令导入导出数据库下的数据
        不多说,直接上干货!  https://www.cloudera.com/documentation/manager/5-1-x/Cloudera-Manager-Installation-Guide/cm5ig_mysql.html?scroll=cmig_topic_5_5      命令行下具体用法如下: mysqldump -u用户名 -p密码 -d  数据库名 表名
    02-10
  • Oracle数据库列出所有表名SQL语句 oracle查询表
     select table_name from user_tables
    02-10
  • MySQL常用sql语句-----数据表的查询操作 mysql查询语句
    MySQL常用sql语句-----数据表的查询操作 mysql
    1.查询指定字段select c_id,c_age,c_name from t_student;select c_id as 编号,c_name as 姓名,c_age 性别 from t_student;2.去重查询select distinct c_address from t_studentselect distinct c_address,c_name from t_student3.比较运算符查询select c_nam
    02-10
  • mysql 查询表字段名,注释 , 以及sql拼接查询出
    #sql查询字段名,注释操作拼接#查询字段名和注释select COLUMN_NAME,COLUMN_COMMENT from information_schema.COLUMNS where table_name = '表名' and table_schema = '库名' order by ordinal_position #查询整个内容select * from information_schema.COLUM
    02-10
  • MySQL-SQL简单查询(单表) sql语句单表查询
    MySQL-SQL简单查询(单表) sql语句单表查询
    1.SELECT语句2.运算符的优先级利用Navicat中的查询方法:栗子1:查询所有货品信息栗子2:查询所有货品的id,productName,salePrice当查询错误的时候出现的界面:栗子3:查询所有货品id,名称和批发价(批发价=卖价*折扣)栗子4:查询所有货品的id,名称,和各进50个
    02-10
  • 怎么用sql修改mysql表名 mysql数据库修改表名
    ALTER TABLE name RENAME TO new_name例如:ALTER TABLE register RENAME TO member
    02-10
点击排行