mysql中index和key的区别

网上查找到的大部分都是这样解释的:
key 是数据库的物理结构,它包含两层意义,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的);
index是数据库的物理结构,它只是辅助查询的,它创建时会在另外的表空间(mysql中的innodb表空间)以一个类似目录的结构存储;
于是自己做了一个测试,测试的mysql版本:5.5.28

1.创建一个表

CREATE TABLE `index_test` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `key_1` bigint(20) NOT NULL,
  `index_1` bigint(20) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.创建key

ALTER TABLE index_test ADD KEY key_1(key_1);

3.创建index

ALTER TABLE index_test ADD INDEX index_1(index_1);

4.查看sql

SHOW CREATE TABLE index_test;

显示:

CREATE TABLE `index_test` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `key_1` bigint(20) NOT NULL,
  `index_1` bigint(20) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `key_1` (`key_1`),
  KEY `index_1` (`index_1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

也就是说创建key和创建index是一样的,在sql的体现上都是KEY;

中有了解释:

也就是说key和index通常是一样的,这样是为了和其他数据库的兼容性而实现的。
但是并不是所有的key和index都是一样的,如果创建的是约束,比如PRIMARY KEY,FOREIGN KEY这种表示约束的,只能用key。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值