主键的完整称呼是主键约束,是 MySQL 中使用最为频繁的约束。一般情况为了便于 DBMS 更快的查找到表中的记录,都会在表中设一个主键。MYSQL 索引用来快速地寻找那些具有特定值的记录,如果没有索引,执行查询时 MySQL 必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求记录。
主键是种约束,唯一索引是种索引,两者在本质上是不同的。
主键创建后一定包含一个唯一性索引,唯一性索引并不一定是主键。
唯一性索引列允许空值,而主键列不允许为空值。
主键列创建时,已经默认为非空值加唯一索引了。
主键可被其他表引用为外键,唯一索引不能。
一个表最多能创建一个主键,但可创建多个唯一索引。
主键和唯一索引都可有多列。
主键适合那些不容易更改的唯一标识,如自动递增列、身份证等。
在 RBO 模式,主键的执行计划优先级高于唯一索引。两者都可以提高查询的速度。
索引是一种特殊的文件,它们包含对数据表里所有记录的引用指针。
主键相当于一本书籍的页码,索引相当于书籍的目录。
其实主键和索引都是键,不过主键是逻辑键,索引是物理键,意思是主键不实际存在,而索引实际存在在数据库中,主键一般都要创建,主要用来避免一张表中有相同的记录,索引一般可以不建,但如果需要对该表进行查询操作,则最好建,这样可以加快检索速度。