首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过连接多列MySQL创建索引

通过连接多列MySQL创建索引
EN

Stack Overflow用户
提问于 2016-01-27 23:47:59
回答 1查看 2.4K关注 0票数 0

我是mySQL新手,试图从甲骨文迁移到mySQL,我有一个索引,需要转换成MySQL。在oracle中,我使用2列创建了这个索引,如下所示:

代码语言:javascript
复制
CREATE INDEX TEST ON TABLE(COL1||'/'||COL2, COL3)

现在,我正试图在mySQL中找到替代方案。我知道我可以在sql中的多个列上创建索引,如下所示:

代码语言:javascript
复制
CREATE INDEX TEST on TABLE(COL1, COL2)

但我希望在多个列上创建索引,这样就可以使用'/‘分隔符将COL1和COL2组合起来,并在其上创建索引。我发现我可以创建一个生成的列并在其上创建索引。所以基本上我会有这样的东西:

代码语言:javascript
复制
 CREATE INDEX TEST on TABLE(GENERATED_COL, COL2)

当我试图创建这个生成的列时,我总是会得到生成列的语法错误。下面是创建表的语法:

代码语言:javascript
复制
CREATE TABLE PATH (
ID INT(38) NOT NULL,
PATH_PREFIX VARCHAR(2000) NOT NULL,
PATH_SUFFIX VARCHAR(255) NOT NULL,
FULLPATH VARCHAR(3000) AS (CONCAT(PATH_PREFIX,'/',PATH_SUFFIX)),
PRIMARY KEY (ID)
)

以下是我的错误:

代码语言:javascript
复制
SQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS (CONCAT(PATH_PREFIX,'/',PATH_SUFFIX)),
PRIMARY KEY (ID)

不知道我是不是做错了什么?如果这不是正确的方法,请有人告诉我创建索引的正确方法是什么(PATH_PREFIX,'/',PATH_SUFFIX)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-28 00:05:43

在mysql v5.7.6中,您可以创建生成的列。如果将其类型设置为存储,则可以在其上创建辅助索引。在v5.7.8中,您甚至可以在虚拟生成的列上创建索引,请参阅mysql在创建表上的文档

从MySQL 5.7.8开始,InnoDB支持虚拟生成列上的辅助索引。不支持其他索引类型。 辅助索引可以在一个或多个虚拟列上创建,也可以在虚拟列和非虚拟生成列的组合上创建。虚拟列上的辅助索引可以定义为唯一索引。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35050416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档