2009-05-29 41 views
2

我正在將MSSQL腳本遷移到Oracle SQL,我無法弄清楚腳本中的哪一行正在做什麼。此Oracle SQL語句執行什麼操作?

我對SQL很陌生。

CREATE TABLE HA_BACKUP_PROCESSES 
(
    ID numeric (10, 0) NOT NULL , 
    PROCESS_ID numeric (10, 0) NOT NULL , 
    BACKUP_PROCESS_ID numeric (10, 0) NOT NULL , 
    CONSTRAINT HA_BCK_PROC_PK PRIMARY KEY (ID) 
     USING INDEX TABLESPACE userdata001 
) 

在上面的代碼,什麼是 'USING INDEX TABLESPACE userdata001' 語句在做什麼?

+0

這會更適合serverfault嗎? – jjnguy 2009-05-29 20:12:16

回答

7

此子句允許選擇與UNIQUE或PRIMARY KEY約束關聯的索引將被創建的表空間。如果未指定,則使用default_tablespace,如果default_tablespace是空字符串,則使用數據庫的默認表空間

+1

這使您可以將索引從數據中分離出來,存儲在某些超級快速介質(如SSD)中,或者簡單地將磁盤分開以便並行訪問 – 2009-05-29 20:27:46

3

表空間不過是數據文件和索引的邏輯容器。

設置Oracle實例時,必須先定義表空間,然後才能創建數據文件。然後,在創建表或索引時,必須指定要在其中創建數據文件的表空間,或接受默認表空間。

2

它指示數據庫將索引信息存儲在名爲「userdata001」的表空間中。

A helpful explanation can be found here

表空間是Oracle數據庫中的邏輯存儲單元。這是合乎邏輯的,因爲表空間在數據庫所在的機器的文件系統中不可見。表空間又由至少一個數據文件組成,而該文件又位於服務器的文件系統中。順便說一句,一個數據文件恰好屬於一個表空間。 存儲在Oracle數據庫中的每個表,索引等都屬於表空間。表空間構建了Oracle數據庫和存儲表或索引數據的文件系統之間的橋樑。