如何使用索引和约束来提高表创建的速度?

时间:2016-03-25 12:26:16

标签: oracle

我必须创建超过500个具有相同列,索引和约束的表。

在下面的代码中,我创建了一个名为TABLE_1的表,我必须创建从TABLE_1到TABLE_500的表....

创建500个表和索引需要更多时间。

有没有办法提高创建表的速度。?

CREATE TABLE TABLE_1 (FEATURE_ID NUMBER(*,0) NOT NULL ENABLE,  
                      COL_1 VARCHAR2(3 CHAR),  
                      COL_2 VARCHAR2(5 CHAR),  
                      COL_3 NUMBER(*,0),  
                      COL_4 NUMBER(*,0),  
                      COL_5 VARCHAR2(5 CHAR),  
                      COL_6 CHAR(5 BYTE),   
                      COL_7 NUMBER(*,0),  
                      COL_8 VARCHAR2(50 CHAR),  
                      COL_9 NUMBER(*,0),  
                      COL_10 VARCHAR2(20 CHAR),  
                      GEOMETRY SDO_GEOMETRY);                 

CREATE BITMAP INDEX TABLE_1_DM_IDX ON TABLE_1(COL_3);  

CREATE BITMAP INDEX TABLE_1_ATR_IDX ON TABLE_1(COL_4);  

CREATE INDEX TABLE_1_SPATIAL_IDX ON TABLE_1(GEOMETRY)  
INDEXTYPE IS MDSYS.SPATIAL_INDEX;  

ALTER TABLE TABLE_1 ADD CONSTRAINT TABLE_1_PK PRIMARY KEY (FEATURE_ID);      


ALTER TABLE TABLE_1 ADD CONSTRAINT TABLE_1_PK PRIMARY KEY (FEATURE_ID);

1 个答案:

答案 0 :(得分:2)

创建一个为您创建名称的PLSQL脚本。

    begin
      for i in 1..500 loop
         execute immediate 'CREATE TABLE TABLE_'||i|| '
                            (FEATURE_ID NUMBER(*,0)  NOT NULL ENABLE,  
                             COL_1 VARCHAR2(3 CHAR),  
                             COL_2 VARCHAR2(5 CHAR), 
                             ... ';
         execute immediate 'CREATE BITMAP INDEX TABLE_'||i||'_DM_IDX ON TABLE_'||i||'(COL_3)';

         ... etc.

      end loop;
    end;
/