网上查找到的大部分都是这样解释的:
key 是数据库的物理结构,它包含两层意义,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的);
index是数据库的物理结构,它只是辅助查询的,它创建时会在另外的表空间(mysql中的innodb表空间)以一个类似目录的结构存储;
于是自己做了一个测试,测试的mysql版本:5.5.28
2.创建key
3.创建index
4.查看sql
显示:
也就是说创建key和创建index是一样的,在sql的体现上都是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。
也就是说key和index通常是一样的,这样是为了和其他数据库的兼容性而实现的。
但是并不是所有的key和index都是一样的,如果创建的是约束,比如PRIMARY KEY,FOREIGN KEY这种表示约束的,只能用key。