GBase 8s
适配迁移
问答

创建索引

发表于2024-08-02 09:47:1497次浏览3个评论

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

【GBase版本】:GBase8sV8.8_TL_3.5.1_3_6a4e30 

【操作系统】:

【CPU】:

【问题描述】*: 创建函数索引失败,一开始的SQL语句是     CREATE INDEX I_PI_INSTR_DB_CATEGORY2 ON PERSON_INFO (SUBSTR(DB_CATEGORY,0,4)) 
  ,我看文档说是不能使用内置函数创建 但我自己创建了一个函数     CREATE OR REPLACE FUNCTION MY_SUBSTR(input_string VARCHAR2, start_pos INT, len INT)
RETURN VARCHAR2
IS
BEGIN
   RETURN SUBSTR(input_string, start_pos, len);
END;     

然后  再次  CREATE INDEX I_PI_INSTR_DB_CATEGORY2 ON PERSON_INFO (MY_SUBSTR(DB_CATEGORY,0,4)) 
 还是失败,这是为什么?

评论

登录后才可以发表评论
9527发表于 2年前
内建函数索引暂不支持,自定义的函数里用了内建函数也不支持,暂时绕不过去。新版本实现了部分函数索引功能,像上面提到的substr,可以期待后续版本。
最佳回答
用户头像
liaosnet发表于 2年前
DROP FUNCTION IF EXISTS my_substr;
CREATE FUNCTION my_substr(p_1 varchar(255))
RETURNS VARCHAR(255) WITH (NOT variant);
RETURN SUBSTR(p_1,1,4);
END FUNCTION;

CREATE INDEX ix_t15 ON t15(my_substr(a));

参数仅能接收字段名称。
爱笑的眼睛发表于 2个月前
等答案了啊。