主键是一个索引,mysql的索引是B+树,Mysql会按照键值的大小进行顺序存放,如果我们设置自增id为主键,这个时候主键是按照一种紧凑的接近顺序写入的方式进行存储数据。

如果我们用其他字段作为主键的话,此时Mysql不得不为了将新记录插到合适位置而移动数据,甚至目标页面可能已经被回写到磁盘上而从缓存中清掉,此时又要从磁盘上读回来,这增加了很多额外的开销,同时频繁的移动、分页操作造成了大量的碎片。
不需要,主键具备索引的功能了。当你创建或设置主键的时候,mysql会自动添加一个与主键对应的唯一索引,不需要再做额外的添加。如果查询的条件中没有用到主键,可以将你的查询字段设置为索引。如果你想在主键上设置索引的话,主键就有索引的功能。扩展资料:
1、主键一定是唯一性的索引,唯一性的所以不一定就是主键。
2、一个表中可以有多个唯一索引,但是主键只能有一个。
3、主键列不允许为空值,而唯一性索引列允许空值。
4、主键也可以由多个字段组成,组成复合主键,同时主键也是唯一索引。
mysql一张表只能定义一个主键。
主键的作用是为了保障数据的唯一性,作为该表的唯一标识,保障数据不会出现重复,可以使用单一字段作为主键(例如身份证号),也可以使用多个字段作为主键(例如姓名+性别+员工号),这样理解起来会比较合适。
主键(primary key) 能够唯一标识表中某一行的属性或属性组。
主键约束比唯一索引约束严格,当没有设定主键时,非空唯一索引自动称为主键。对于主键和唯一索引的一些区别主要如下:
1.主键不允许空值,唯一索引允许空值
2.主键只允许一个,唯一索引允许多个
3.主键产生唯一的聚集索引,唯一索引产生唯一的非聚集索引 注:聚集索引确定表中数据的物理顺序,所以是主键是唯一的(聚集就是整理数据的意思)
主键约束比唯一索引约束严格,当没有设定主键时,非空唯一索引自动称为主键。对于主键和唯一索引的一些区别主要如下:
1.主键不允许空值,唯一索引允许空值
2.主键只允许一个,唯一索引允许多个
3.主键产生唯一的聚集索引,唯一索引产生唯一的非聚集索引
注:聚集索引确定表中数据的物理顺序,所以是主键是唯一的(聚集就是整理数据的意思)