最近在使用MySQL的key和index创建索引让人有点迷惑,搞不清楚二者之间的区别,请教了不少人 在Google上也找到不少答案,打算在这里写篇文章总结一下。
KEY
key 是数据库的物理结构,它包含两层意义,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的)。包括primary key, unique key, foreign key 等。
- primary key
有两个作用,一是约束作用(constraint),用来规范一个存储主键和唯一性,但同时也在此key上建立了一个index; - unique key
- foreign key也有两个作用,一是约束作用(constraint),规范数据的引用完整性,但同时也在这个key上建立了一个index;
MySQL中的key是同时具有constraint和index的意义。
MySQL requires every Key also be indexed, that's an implementation detail specific to MySQL to improve performance.
- 1
- 1
INDEX
index是数据库的物理结构,它只是辅助查询的,它创建时会在另外的表空间(mysql中的innodb表空间)以一个类似目录的结构存储。索引要分类的话,分为前缀索引、全文本索引等;因此,索引只是索引,它不会去约束索引的字段的行为。
例如:create table t(id int, index inx_tx_id (id));
总结
我们说索引分类,分为主键索引、唯一索引、普通索引(这才是纯粹的index)等,也是基于是不是把index看作了key。比如 create table t(id int, unique index inx_tx_id (id)); 这里的index相当于key的效果。
MySQL中有四种Key: Primary Key, Unique Key, Key 和 Foreign Key。
除了Foreign Key最好理解外,其他的都要区分一下。
剩下的三种都要在原表上建立索引。
Primary Key和Unique Key之间的区别晚上说的最多。Primary Key的提出
就是为了唯一标示表中的字段,就像我们的身份证号一样。此外,所有字段都
必须是not null的Unique Key则是为了保证表中有些字段是唯一的。比如有
些单位领导叫“张三”,所以下面招人的时候是决不可招一个有同样名字的。至于
Key吗,网上说的比较少。其实某个字段标记为Key,是不能保证这个字段的值
在表中是唯一出现的。它的目的就是建立索引。
最近在使用MySQL的key和index创建索引让人有点迷惑,搞不清楚二者之间的区别,请教了不少人 在Google上也找到不少答案,打算在这里写篇文章总结一下。
KEY
key 是数据库的物理结构,它包含两层意义,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的)。包括primary key, unique key, foreign key 等。
- primary key
有两个作用,一是约束作用(constraint),用来规范一个存储主键和唯一性,但同时也在此key上建立了一个index; - unique key
- foreign key也有两个作用,一是约束作用(constraint),规范数据的引用完整性,但同时也在这个key上建立了一个index;
MySQL中的key是同时具有constraint和index的意义。
MySQL requires every Key also be indexed, that's an implementation detail specific to MySQL to improve performance.
- 1
- 1
INDEX
index是数据库的物理结构,它只是辅助查询的,它创建时会在另外的表空间(mysql中的innodb表空间)以一个类似目录的结构存储。索引要分类的话,分为前缀索引、全文本索引等;因此,索引只是索引,它不会去约束索引的字段的行为。
例如:create table t(id int, index inx_tx_id (id));
总结
我们说索引分类,分为主键索引、唯一索引、普通索引(这才是纯粹的index)等,也是基于是不是把index看作了key。比如 create table t(id int, unique index inx_tx_id (id)); 这里的index相当于key的效果。
MySQL中有四种Key: Primary Key, Unique Key, Key 和 Foreign Key。
除了Foreign Key最好理解外,其他的都要区分一下。
剩下的三种都要在原表上建立索引。
Primary Key和Unique Key之间的区别晚上说的最多。Primary Key的提出
就是为了唯一标示表中的字段,就像我们的身份证号一样。此外,所有字段都
必须是not null的Unique Key则是为了保证表中有些字段是唯一的。比如有
些单位领导叫“张三”,所以下面招人的时候是决不可招一个有同样名字的。至于
Key吗,网上说的比较少。其实某个字段标记为Key,是不能保证这个字段的值
在表中是唯一出现的。它的目的就是建立索引。
最近在使用MySQL的key和index创建索引让人有点迷惑,搞不清楚二者之间的区别,请教了不少人 在Google上也找到不少答案,打算在这里写篇文章总结一下。
KEY
key 是数据库的物理结构,它包含两层意义,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的)。包括primary key, unique key, foreign key 等。
- primary key
有两个作用,一是约束作用(constraint),用来规范一个存储主键和唯一性,但同时也在此key上建立了一个index; - unique key
- foreign key也有两个作用,一是约束作用(constraint),规范数据的引用完整性,但同时也在这个key上建立了一个index;
MySQL中的key是同时具有constraint和index的意义。
MySQL requires every Key also be indexed, that's an implementation detail specific to MySQL to improve performance.
- 1
- 1
INDEX
index是数据库的物理结构,它只是辅助查询的,它创建时会在另外的表空间(mysql中的innodb表空间)以一个类似目录的结构存储。索引要分类的话,分为前缀索引、全文本索引等;因此,索引只是索引,它不会去约束索引的字段的行为。
例如:create table t(id int, index inx_tx_id (id));
总结
我们说索引分类,分为主键索引、唯一索引、普通索引(这才是纯粹的index)等,也是基于是不是把index看作了key。比如 create table t(id int, unique index inx_tx_id (id)); 这里的index相当于key的效果。