MySQL中的四种Key

本文探讨了MySQL中Key和Index的区别,详细解释了PrimaryKey、UniqueKey和Key的概念及其在数据库中的作用,并对它们如何影响数据完整性和查询性能进行了总结。

source: http://blog.youkuaiyun.com/aoogoo/article/details/4473466

source: http://blog.youkuaiyun.com/top_code/article/details/50599840

最近在使用MySQL的key和index创建索引让人有点迷惑,搞不清楚二者之间的区别,请教了不少人 在Google上也找到不少答案,打算在这里写篇文章总结一下。

KEY

key 是数据库的物理结构,它包含两层意义,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的)。包括primary key, unique key, foreign key 等。

  • primary key 
    有两个作用,一是约束作用(constraint),用来规范一个存储主键和唯一性,但同时也在此key上建立了一个index;
  • unique key 也有两个作用,一是约束作用(constraint),规范数据的唯一性,但同时也在这个key上建立了一个index;
  • 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的效果。

参考链接:http://stackoverflow.com/questions/1401572/what-are-differences-between-index-v-s-key-in-mysql




MySQL中有四种Key: Primary Key, Unique Key, Key 和 Foreign Key。

除了Foreign Key最好理解外,其他的都要区分一下。

剩下的三种都要在原表上建立索引。

Primary Key和Unique Key之间的区别晚上说的最多。Primary Key的提出

就是为了唯一标示表中的字段,就像我们的身份证号一样。此外,所有字段都

必须是not null的Unique Key则是为了保证表中有些字段是唯一的。比如有

些单位领导叫“张三”,所以下面招人的时候是决不可招一个有同样名字的。至于

Key吗,网上说的比较少。其实某个字段标记为Key,是不能保证这个字段的值

在表中是唯一出现的。它的目的就是建立索引。


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值