首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能使用MySQL中的列定义创建索引?

为什么我不能使用MySQL中的列定义创建索引?
EN

Database Administration用户
提问于 2019-11-05 12:48:13
回答 1查看 43关注 0票数 0

请考虑以下创建表语法

代码语言:javascript
复制
CREATE TABLE test1 (f1 int primary key, f2 int, unique key(f2));

我还可以这样写上面的内容

代码语言:javascript
复制
CREATE TABLE test1 (f1 int primary key, f2 int unique key);

为什么我不能对索引做同样的操作?

代码语言:javascript
复制
CREATE TABLE test1 (f1 int primary key, f2 int, index(f2)); -- is valid
CREATE TABLE test1 (f1 int primary key, f2 int index); -- is invalid

我知道后者在语法上是错误的,但您能详细说明为什么MySQL选择在列定义中不允许索引吗?虽然对于唯一的键非常好,但是索引会有什么问题呢?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2019-11-05 17:04:32

为什么我不能对索引做同样的操作?

我猜想,他们只是还没有准备好实现和测试这个语法扩展。对这类定义的支持可以在以后的版本中添加。

IIRC内联索引定义不是任何SQL标准的一部分,而是一些DB引擎为方便而添加的内容,因此,如果您希望保持与一系列数据库后端的兼容性,这可能是停止使用内联索引定义的考虑因素。当然,其他数据库也实现了这种语法( Server在2014年发布版中添加了mySQL支持的和您正在寻找的两种表单,并在2016年进行了一些增强),但可能不是以一种直接兼容的方式实现的。

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

https://dba.stackexchange.com/questions/252579

复制
相关文章

相似问题

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