MySQL 主键与索引的联系与区别分析

关系数据库依赖于主键,它是数据库物理模式的基石。主键在物理层面上只有两个用途: 

唯一地标识一行。 
做为一个能够被外键有效引用的对象。 
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里全部记录的引用指针。下面是主键和索引的一些区别与联系。 

1. 主键必定是惟一性索引,惟一性索引并不必定就是主键。 

所谓主键就是可以惟一标识表中某一行的属性或属性组,一个表只能有一个主键,但能够有多个候选索引。由于主键能够惟一标识某一行记录,因此能够确保执行数据更新、删除的时候不会出现张冠李戴的错误。主键除了上述做用外,经常与外键构成参照完整性约束,防止出现数据不一致。数据库在设计时,主键起到了很重要的做用。 

主键能够保证记录的惟一和主键域非空,数据库管理系统对于主键自动生成惟一索引,因此主键也是一个特殊的索引。 

2. 一个表中能够有多个惟一性索引,但只能有一个主键。 

3. 主键列不容许空值,而惟一性索引列容许空值。 

4. 索引能够提升查询的速度。 

其实主键和索引都是键,不过主键是逻辑键,索引是物理键,意思就是主键不实际存在,而索引实际存在在数据库中,主键通常都要建,主要是用来避免一张表中有相同的记录,索引通常能够不建,但若是须要对该表进行查询操做,则最好建,这样能够加快检索的速度。 

FAQ 

1. 主键是个什么? 

我来来具体的东西说吧,书你们都看过吧,没看过的找本翻一下,看下它每页是否是有个页码,咱们的数据表主键就至关因而这个页码,明白了吧。 

2. 那么索引是什么呢? 

咱们还拿书来讲,索引至关于书的目录,有了目录咱们能够很快的知道这本书的基本内容和结构,数据索引也同样,它能够加快数据表的查询速度。 

3. 主键主索引类比,及其余们的做用? 

主键是为了标识数据库记录惟一性,不容许记录重复,且键值不能为空,主键也是一个特殊索引。 
数据表中只容许有一个主键,可是能够有多个索引。 
使用主键会数据库会自动建立主索引,也能够在非主键上建立索引,方便查询效率。 
索引能够提升查询速度,它就至关于字典的目录,能够经过它很快查询到想要的结果,而不须要进行全表扫描。 
主键索引外索引的值能够为空。 
主键也能够由多个字段组成,组成复合主键,同时主键确定也是惟一索引。 
惟一索引则表示该索引值惟一,能够由一个或几个字段组成,一个表能够有多个惟一索引。数据库

相关文章
相关标签/搜索