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));
参数仅能接收字段名称。
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个月前
等答案了啊。
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25044
- 42023-09-25浏览数:18519
- 52020-05-11浏览数:17526