主键的完整称呼是主键约束,是MySQL中使用最为频繁的约束。一般情况为了便于DBMS更快的查找到表中的记录,都会在表中设一个主键。MYSQL索引用来快速地寻找那些具有特定值的记录,如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求记录。

两者区别

主键是种约束,唯一索引是种索引,两者在本质上是不同的。

主键创建后一定包含一个唯一性索引,唯一性索引并不一定是主键。

唯一性索引列允许空值,而主键列不允许为空值。

主键列创建时,已经默认为非空值加唯一索引了。

主键可被其他表引用为外键,唯一索引不能。

一个表最多能创建一个主键,但可创建多个唯一索引。

主键和唯一索引都可有多列。

主键适合那些不容易更改的唯一标识,如自动递增列、身份证等。

在RBO模式,主键的执行计划优先级高于唯一索引。两者都可以提高查询的速度。

索引是一种特殊的文件,它们包含对数据表里所有记录的引用指针。

总体来说

主键相当于一本书籍的页码,索引相当于书籍的目录。

其实主键和索引都是键,不过主键是逻辑键,索引是物理键,意思是主键不实际存在,而索引实际存在在数据库中,主键一般都要创建,主要用来避免一张表中有相同的记录,索引一般可以不建,但如果需要对该表进行查询操作,则最好建,这样可以加快检索速度。

评论