索引
CREATE TABLE语句支持创建索引。DSC支持带有主索引(PRIMARY INDEX)和唯一索引(UNIQUE INDEX)的TABLE语句。
该工具不会添加DISTRIBUTE BY HASH用于创建具有主键(PRIMARY KEY)和非唯一主索引的表。
输入:CREATE TABLE,使用INDEX
1 2 3 4 5 6 7 8 9 10 11 12 |
CREATE SET TABLE DP_TEDW.B0381_ACCOUNT_OBTAINED_MAP, NO FALLBACK, NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM = DEFAULT ( Ranked_Id INTEGER NOT NULL , Source_System_Code SMALLINT NOT NULL , Operational_Acc_Obtained_Id VARCHAR(100) CHARACTER SET LATIN NOT CASESPECIFIC FORMAT 'X(50)' , Mapped_Id INTEGER NOT NULL ) PRIMARY INDEX B0381_ACCOUNT_OBTAINED_idx_PR ( Ranked_Id ) UNIQUE INDEX B0381_ACCT_OBT_MAP__idx_SCD ( Source_System_Code ) INDEX B0381_ACCT_OBT_MAP__idx_OPID ( Operational_Acc_Obtained_Id ); |
输出:
1 2 3 4 5 6 7 8 9 10 |
CREATE TABLE DP_TEDW.B0381_ACCOUNT_OBTAINED_MAP ( Ranked_Id INTEGER NOT NULL , Source_System_Code SMALLINT NOT NULL , Operational_Acc_Obtained_Id VARCHAR( 100 ) , Mapped_Id INTEGER NOT NULL ) DISTRIBUTE BY HASH ( Ranked_Id ); CREATE INDEX B0381_ACCT_OBT_MAP__idx_SCD ON DP_TEDW.B0381_ACCOUNT_OBTAINED_MAP ( Source_System_Code ); CREATE INDEX B0381_ACCT_OBT_MAP__idx_OPID ON DP_TEDW.B0381_ACCOUNT_OBTAINED_MAP ( Operational_Acc_Obtained_Id ); |
由于索引列列表(organic_name)不是DISTRIBUTE BY列列表(serial_no、organic_name)的超集,因此索引中删除了UNIQUE。
输入:CREATE TABLE,使用主键和非唯一主索引(未添加DISTRIBUTE BY HASH)
1 2 3 4 5 6 7 8 9 10 |
CREATE TABLE employee ( EMP_NO INTEGER , DEPT_NO INTEGER , FIRST_NAME VARCHAR(20) , LAST_NAME CHAR(20) , SALARY DECIMAL(10,2) , ADDRESS VARCHAR(100) , CONSTRAINT pk_emp PRIMARY KEY ( EMP_NO ) ) PRIMARY INDEX ( DEPT_NO ) ; |
输出:
1 2 3 4 5 6 7 8 9 10 11 |
CREATE TABLE employee ( EMP_NO INTEGER , DEPT_NO INTEGER , FIRST_NAME VARCHAR(20) , LAST_NAME CHAR(20) , SALARY DECIMAL(10,2) , ADDRESS VARCHAR(100) , CONSTRAINT pk_emp PRIMARY KEY ( EMP_NO ) ) ; |
创建带索引分区表
如果配置参数tdMigrateRANGE_N为true。
输入:
CREATE SET TABLE SC.TAB , NO FALLBACK, NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM=DEFAULT, DEFAULT MERGEBLOCKRATIO ( ACCOUNT_NUM VARCHAR(255) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL ,ACCOUNT_MODIFIER_NUM CHAR(18) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL ,END_DT DATE FORMAT 'YYYY-MM-DD' ,UPD_TXF_BATCHTD INTEGER COMPRESS ) PRIMARY INDEX XPKT0300_AGREEMENT (ACCOUNT_NUM,ACCOUNT_MODIFIER_NUM) PARTITION BY RANGE_N(END_DT BETWEEN '2001-01-01' AND '2020-12-31' EACH INTERVAL '1' DAY, NO RANGE ,UNKNOWN) INDEX (UPD_TXF_BATCHTD) ;
输出:
CREATE TABLE SC.TAB ( ACCOUNT_NUM VARCHAR( 255 ) /* CHARACTER SET LATIN*/ /* NOT CASESPECIFIC*/ NOT NULL ,ACCOUNT_MODIFIER_NUM CHAR( 18 ) /* CHARACTER SET LATIN*/ /* NOT CASESPECIFIC*/ NOT NULL ,END_DT DATE ,UPD_TXF_BATCHTD INTEGER /* COMPRESS */ ) DISTRIBUTE BY HASH ( ACCOUNT_NUM ,ACCOUNT_MODIFIER_NUM ) PARTITION BY RANGE (END_DT) ( PARTITION TAB_1 start ('2001-01-01') END ('2020-12-31') EVERY ( INTERVAL '1' DAY ) ) ; CREATE INDEX ON SC.TAB (UPD_TXF_BATCHTD) LOCAL;