索引
在GaussDB(DWS)中创建索引期间,索引名不能与模式名一起指定。该索引将在创建索引表的模式中自动创建。
输入:基于CASE函数的索引
函数索引是基于列函数或表达式计算结果创建的索引。
输入
1 2 3 4 5 6 7 8 9 |
CREATE UNIQUE index GCC_RSRC_ASSIGN_U1 ON GCC_PLAN.GCC_RSRC_ASSIGN_T ( (CASE WHEN( ENABLE_FLAG = 'Y' AND ASSIGN_TYPE = '13' AND WORK_ORDER_ID IS NOT NULL ) THEN WORK_ORDER_ID ELSE NULL END) ) ; |
需要将表达式或函数放在()里。
输入:基于DECODE函数的索引
1 2 3 4 5 6 7 8 9 |
CREATE UNIQUE index GCC_PLAN_N2 ON GCC_PLAN.GCC_PLAN_T ( DECODE ( ENABLE_FLAG ,'Y' ,BUSINESS_ID ,NULL ) ) ; |
输出
1 2 3 4 5 6 7 8 9 |
CREATE UNIQUE index GCC_PLAN_N2 ON GCC_PLAN.GCC_PLAN_T ( (DECODE ( ENABLE_FLAG ,'Y' ,BUSINESS_ID ,NULL )) ) ; |
需要将表达式或函数放在()里。
ORA_HASH
ORA_HASH函数用于计算给定表达式或列的哈希值。如果在CREATE INDEX中为列指定了此函数,则此函数将被删除。
输入
1
|
CREATE INDEX SD_WO.WO_WORK_ORDER_T_N3 on SD_WO.WO_WORK_ORDER_T (PROJECT_NUMBER, ORA_HASH(WORK_ORDER_NAME)); |
输出
1 2 3 4 5 6 |
CREATE index WO_WORK_ORDER_T_N3 ON SD_WO.WO_WORK_ORDER_T ( PROJECT_NUMBER ,ORA_HASH( WORK_ORDER_NAME ) ) ; |
DECODE
如果在CREATE INDEX语句中给列加上DECODE函数,则上报syntax error at or near 'DECODE' (Script - gcc_plan_t.SQL)错误。
输入
1
|
CREATE UNIQUE index GCC_PLAN.GCC_PLAN_N2 on GCC_PLAN.GCC_PLAN_T (DECODE(ENABLE_FLAG,'Y',BUSINESS_ID,NULL)); |
输出
1 2 3 4 5 6 7 8 9 10 |
CREATE UNIQUE index GCC_PLAN_N2 ON GCC_PLAN.GCC_PLAN_T ( DECODE ( ENABLE_FLAG ,'Y' ,BUSINESS_ID ,NULL ) ) ; |
CASE语句
CREATE INDEX中不支持CASE语句。
输入
1 2 3 4 5 6 7 8 9 |
CREATE UNIQUE index GCC_RSRC_ASSIGN_U1 ON GCC_PLAN.GCC_RSRC_ASSIGN_T ( (CASE WHEN( ENABLE_FLAG = 'Y' AND ASSIGN_TYPE = '13' AND WORK_ORDER_ID IS NOT NULL ) THEN WORK_ORDER_ID ELSE NULL END) ) ; |
输出
1 2 3 4 5 6 7 |
CREATE UNIQUE INDEX gcc_rsrc_assign_u1 ON gcc_plan.gcc_rsrc_assign_t ( (( CASE WHEN( enable_flag = 'Y' AND assign_type = '13' AND work_order_id IS NOT NULL ) THEN work_order_id ELSE NULL END )) ); |