程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> 關於Oracle數據庫 >> Oracle中如何把表和索引放在不同的表空間裡

Oracle中如何把表和索引放在不同的表空間裡

編輯:關於Oracle數據庫
    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
    ) ;

     

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved