您的位置:首页 > 数据库 > MySQL

mysql中index和key的区别

2017-10-25 22:05 253 查看
网上查找到的大部分都是这样解释的:

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;

在:https://dev.mysql.com/doc/refman/5.6/en/create-table.html
中有了解释:



也就是说key和index通常是一样的,这样是为了和其他数据库的兼容性而实现的。

但是并不是所有的key和index都是一样的,如果创建的是约束,比如PRIMARY KEY,FOREIGN KEY这种表示约束的,只能用key。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: